soi-manim/graph/dfs/dfs-manim.py

36 lines
975 B
Python
Raw Normal View History

2022-09-22 22:59:36 +02:00
from manim import *
class Main(Scene):
def construct(self):
# change
adj_list = [[1, 2], [0, 3], [0, 3], [1, 2, 4], [3]]
vertices = [v for v, _ in enumerate(adj_list)]
edges = [(v, u) for v, neighs in enumerate(adj_list) for u in neighs]
adj_vis = Graph(vertices, edges, labels=True, layout='spring', vertex_config={"fill_color": WHITE, "fill_opacity": 0.5})
self.play(Create(adj_vis))
self.wait()
visited = [False for _ in adj_list]
print(adj_vis[0])
def dfs(v):
self.play(Indicate(adj_vis[v]))
if visited[v]:
return
visited[v] = True
self.play(ApplyMethod(adj_vis[v].set_opacity, 1.0))
for u in adj_list[v]:
self.play(Indicate(adj_vis.edges[(v, u)]), Indicate(adj_vis.edges[(u, v)]))
dfs(u)
self.play(ApplyMethod(adj_vis[v].set_color, BLUE))
dfs(0)