@@ -1403,6 +1403,8 @@ def _find_path_dfs(graph, s, t, flow_pass):
1403
1403
>>> flow_passed = {}
1404
1404
>>> path_flow, parent = _find_path_dfs(graph, 's', 't', flow_passed)
1405
1405
"""
1406
+ if s == t :
1407
+ return 0 , {}
1406
1408
1407
1409
visited = {}
1408
1410
stack = Stack ()
@@ -1427,21 +1429,19 @@ def _find_path_dfs(graph, s, t, flow_pass):
1427
1429
parent [i_name ] = curr
1428
1430
stack .append (i_name )
1429
1431
1430
- if t not in parent and t == s :
1431
- return 0 , {}
1432
+ if t not in parent :
1433
+ return 0 , {}
1432
1434
1433
- curr = t
1434
- path_flow = float ('inf' )
1435
- if t == s :
1436
- return 0 , {}
1437
- while curr != s :
1438
- prev = parent [curr ]
1439
- capacity = graph .get_edge (prev , curr ).value
1440
- flow = flow_pass .get ((prev , curr ), 0 )
1441
- path_flow = min (path_flow , capacity - flow )
1442
- curr = prev
1435
+ curr = t
1436
+ path_flow = float ('inf' )
1437
+ while curr != s :
1438
+ prev = parent [curr ]
1439
+ capacity = graph .get_edge (prev , curr ).value
1440
+ flow = flow_pass .get ((prev , curr ), 0 )
1441
+ path_flow = min (path_flow , capacity - flow )
1442
+ curr = prev
1443
1443
1444
- return path_flow , parent
1444
+ return path_flow , parent
1445
1445
1446
1446
def _max_flow_ford_fulkerson_ (graph , s , t ):
1447
1447
"""
@@ -1478,6 +1478,9 @@ def _max_flow_ford_fulkerson_(graph, s, t):
1478
1478
if s not in graph .vertices or t not in graph .vertices :
1479
1479
raise ValueError ("Source or sink not in graph." )
1480
1480
1481
+ if s == t :
1482
+ return 0
1483
+
1481
1484
ans = 0
1482
1485
flow_pass = {}
1483
1486
0 commit comments