diff --git a/3. Algorithms on Graph/Week1-Graph-Decomposition1/1_finding_exit_from_maze/reachability_stack.py b/3. Algorithms on Graph/Week1-Graph-Decomposition1/1_finding_exit_from_maze/reachability_stack.py new file mode 100644 index 0000000..d5b4aff --- /dev/null +++ b/3. Algorithms on Graph/Week1-Graph-Decomposition1/1_finding_exit_from_maze/reachability_stack.py @@ -0,0 +1,32 @@ +#Uses python3 + +import sys + +def reach(adj, x, y): + #write your code here + stack = [x] + visited = set() + while stack: + v = stack.pop() + if v == y: + return 1 + visited.add(v) + for i in adj[v]: + if i in visited: + continue + stack.append(i) + return 0 + +if __name__ == '__main__': + input = sys.stdin.read() + data = list(map(int, input.split())) + n, m = data[0:2] + data = data[2:] + edges = list(zip(data[0:(2 * m):2], data[1:(2 * m):2])) + x, y = data[2 * m:] + adj = [[] for _ in range(n)] + x, y = x - 1, y - 1 + for (a, b) in edges: + adj[a - 1].append(b - 1) + adj[b - 1].append(a - 1) + print(reach(adj, x, y))