Skip to content

Commit 3c1d2ee

Browse files
authored
Create shortest-cycle-in-a-graph.py
1 parent 23ee851 commit 3c1d2ee

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Python/shortest-cycle-in-a-graph.py

+35
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)