Skip to content

Commit b5cbf93

Browse files
committed
Added very hard problem
1 parent 32d8bae commit b5cbf93

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Very Hard/two-edge-connected-graph.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
# TWO EDGE CONNECTED GRAPH
3+
4+
# O(V + E) time and O(V) space
5+
def twoEdgeConnectedGraph(edges):
6+
# Write your code here.
7+
if len(edges) == 0:
8+
return True
9+
10+
arrivalTimes = [-1] * len(edges)
11+
startVertex = 0
12+
13+
if getMinTime(startVertex, -1, 0, arrivalTimes, edges) == -1:
14+
return False
15+
16+
return areAllVerticesVisited(arrivalTimes)
17+
18+
def areAllVerticesVisited(arrivalTimes):
19+
for time in arrivalTimes:
20+
if time == -1:
21+
return False
22+
23+
return True
24+
25+
def getMinTime(currentVertex, parent, currentTime, arrivalTimes, edges):
26+
arrivalTimes[currentVertex] = currentTime
27+
minimumArrivalTime = currentTime
28+
29+
for destination in edges[currentVertex]:
30+
if arrivalTimes[destination] == -1:
31+
minimumArrivalTime = min(minimumArrivalTime, getMinTime(destination, currentVertex, currentTime + 1, arrivalTimes, edges))
32+
elif destination != parent:
33+
minimumArrivalTime = min(minimumArrivalTime, arrivalTimes[destination])
34+
35+
if minimumArrivalTime == currentTime and parent != -1:
36+
return -1
37+
38+
return minimumArrivalTime

0 commit comments

Comments
 (0)