We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 23ee851 commit 3c1d2eeCopy full SHA for 3c1d2ee
Python/shortest-cycle-in-a-graph.py
@@ -0,0 +1,35 @@
1
+# Time: O(n^2)
2
+# Space: O(n + e)
3
+
4
+# bfs
5
+class Solution(object):
6
+ def findShortestCycle(self, n, edges):
7
+ """
8
+ :type n: int
9
+ :type edges: List[List[int]]
10
+ :rtype: int
11
12
+ INF = float("inf")
13
+ def bfs(u):
14
+ dist = [float("inf")]*len(adj)
15
+ q = [u]
16
+ dist[u] = 0
17
+ while q:
18
+ new_q = []
19
+ for u in q:
20
+ for v in adj[u]:
21
+ if dist[v] == dist[u]-1: # v == p
22
+ continue
23
+ if dist[v] != INF:
24
+ return 1+dist[u]+dist[v]
25
+ dist[v] = dist[u]+1
26
+ new_q.append(v)
27
+ q = new_q
28
+ return INF
29
30
+ adj = [[] for _ in xrange(n)]
31
+ for u, v in edges:
32
+ adj[u].append(v)
33
+ adj[v].append(u)
34
+ result = min(bfs(u) for u in xrange(n))
35
+ return result if result != INF else -1
0 commit comments