Problem Statement
Given the directed, connected and unweighted graph G and the task to check whether the graph contains a cycle or not.
Example Input

Expected Output
No
Approach
The approach is to use Depth First Traversal to detect a cycle in a Graph. While traversing through the graph if previous node visited node is encountered again this means cycle is present. If cycle is present then print “Yes” otherwise “No”.
Implementation in Python
from collections import defaultdict Graph = [] V = 0 def gragh_add(x): global Graph, V Graph = defaultdict(list) V = x def addEdge(u,v): global Graph Graph[u].append(v) def Solution(v, Check_Visited, Result): Check_Visited[v] = True Result[v] = True for vertices in Graph[v]: if Check_Visited[vertices] == False: if Solution(vertices, Check_Visited, Result) == True: return True elif Result[vertices] == True: return True Result[v] = False return False def isCyclic(): Check_Visited = [False] * V Result = [False] * V for node in range(V): if Check_Visited[node] == False: if Solution(node,Check_Visited,Result) == True: return True return False gragh_add(4) addEdge(0, 1) addEdge(0, 2) addEdge(0, 3) addEdge(1, 3) addEdge(2, 1) addEdge(2, 3) if isCyclic(): print("Yes") else: print("No")