Skip to content

Commit ec529c8

Browse files
authored
detect_cycle_directed_graph
Initial File
1 parent f9323e3 commit ec529c8

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

detect_cycle_directed_graph

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
class Graph:
2+
def __init__(self, v):
3+
# No. of vertices of graph
4+
self.v = v
5+
# Adjacency List
6+
self.adj = [0] * v
7+
for i in range(self.v):
8+
self.adj[i] = []
9+
10+
def addedge(self, i,j):
11+
self.adj[i].append(j)
12+
13+
def isCyclic(self):
14+
visited = [False] * self.v
15+
helper = [False] * self.v
16+
for i in range(self.v):
17+
if visited[i] == False:
18+
ans = self.DFS(i,visited,helper)
19+
if ans == True:
20+
return True
21+
return False
22+
23+
24+
def DFS(self,i, visited,helper):
25+
visited[i] = True
26+
helper[i] = True
27+
neighbours = self.adj[i]
28+
for k in range(len(neighbours)):
29+
curr = neighbours[k]
30+
if helper[curr] == True:
31+
return True
32+
if visited[curr] == False:
33+
ans = self.DFS(curr,visited,helper)
34+
if ans == True:
35+
return True
36+
helper[i] = False
37+
return False
38+
39+
40+
if __name__ == "__main__":
41+
# No of nodes
42+
n = 4
43+
g = Graph(n)
44+
45+
g.addedge(0, 1)
46+
g.addedge(3, 1)
47+
g.addedge(1, 2)
48+
g.addedge(0, 3)
49+
50+
if g.isCyclic() == 1:
51+
print("Graph has a cycle")
52+
else:
53+
print("Graph has no cycle")

0 commit comments

Comments
 (0)