summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorHaidong Ji2020-05-10 17:56:56 -0500
committerHaidong Ji2020-05-10 17:56:56 -0500
commit6149e6ba6be2d253384d34196826b26c8287610b (patch)
tree5dabd04e5787ac1325874abb2335a9dacffe826d /sources
Reachability done!
Diffstat (limited to 'sources')
-rw-r--r--sources/__init__.py0
-rw-r--r--sources/reachability.py37
2 files changed, 37 insertions, 0 deletions
diff --git a/sources/__init__.py b/sources/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sources/__init__.py
diff --git a/sources/reachability.py b/sources/reachability.py
new file mode 100644
index 0000000..07bb9df
--- /dev/null
+++ b/sources/reachability.py
@@ -0,0 +1,37 @@
+#Uses python3
+
+import sys
+
+
+def explore(adj, visited, x, y):
+ visited.append(x)
+ if x == y:
+ return
+ for i in adj[x]:
+ if i not in visited:
+ explore(adj, visited, i, y)
+
+
+def reach(adj, x, y):
+ visited = []
+ if x == y:
+ return 1
+ explore(adj, visited, x, y)
+ if y in visited:
+ return 1
+ 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))