Problem: https://leetcode.com/problems/all-paths-from-source-lead-to-destination/
We need to check if all paths start from 'source' can end up with the 'destination' and there is no cycle exists on the paths.
class Solution:
def leadsToDestination(self, n: int, edges: List[List[int]], source: int, destination: int) -> bool:
graph = defaultdict(set)
for a, b in edges:
graph[a].add(b)
def dfs(a, visited):
if a in visited:
# detect a cycle
return False
if not graph[a]:
# check if it ends up at 'destination'
return a == destination
visited.add(a)
for b in graph[a]:
if not dfs(b, visited):
return False
visited.remove(a)
return True
return dfs(source, set())
No comments:
Post a Comment