-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdfs.py
61 lines (54 loc) · 890 Bytes
/
dfs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
'''
A
/ \
B<- C
/ \ \
D E ->F
/
G
/
H
'''
adj_list = {
"A": ["B", "C"],
"B": ["D","E"],
"C": ["B", "F"],
"D": ["G","H"],
"E": ["F"],
"F": [],
"G": ["H"],
"H": []
}
color = {} #W, G, B
parent = {}
trav_time = {} #[start,end]
dfs_traversal_output = []
for node in adj_list.keys():
color[node] = "W"
parent[node] = None
trav_time[node] = [-1,-1]
print(color)
print()
print(parent)
print()
print(trav_time)
time = 0
def dfs_util(u):
global time
color[u] = "G"
trav_time[u][0] = time
dfs_traversal_output.append(u)
time += 1
for v in adj_list[u]:
if color[v] == "W":
parent[v] = u
dfs_util(v)
color[u] = "B"
trav_time[u][1]= time
time +=1
print()
dfs_util("A")
print(dfs_traversal_output)
print(color)
print(parent)
print(trav_time)