-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTopologicalS.py
More file actions
56 lines (50 loc) · 1.03 KB
/
TopologicalS.py
File metadata and controls
56 lines (50 loc) · 1.03 KB
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
class DepthFirstOrd:
def __init__(self, G):
self.pre = []
self.post = []
self.reversePost = []
self.marked = [False] * len(G)
for i in range(len(self.marked)):
if(not self.marked[i]): dfs(G,v)
def dfs(G,v):
self.marked[v] = True
self.pre.append(v)
self.marked[v] = True
for i in G[v]:
if(not marked[i]):
dfs(G,i)
self.post.append(v)
self.reversePost.insert(0,v)
def reversePostOrd():
return self.reversePost
visited = []
def main():
N = (int,input())
G = [[] for i in range(N)] #for N nodes
global visited;
visited = [False for i in range(N+1)]
for i in range(N):
s,e = map(int,input().split())
G[s] = e #exclude one if un directed
G[e] = s
def dfs(G,v):
global visited;
stack = []
stack.append(v)
while S do:
v = S.pop(0)
if not visited[v]:
visited[v] = True;
for w in G[v]:
S.push(w)
def bfs(G,v):
global visited;
queue = []
queue.append(v)
visited[v] = True
while queue:
v = queue.pop()
for w in G[v]:
if not visited[w]:
visited[w] = True
queue.append(w)