1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Solution { public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) { List<Set<Integer>> startToTargetSetList = new ArrayList<>(n); for (int i = 0; i < n; i++) { startToTargetSetList.add(new HashSet<>()); }
for (int[] edge : graph) { startToTargetSetList.get(edge[0]).add(edge[1]); }
return dfs(startToTargetSetList, start, target); }
private boolean dfs(List<Set<Integer>> startToTargetSetList, int start, int target) { Set<Integer> targetSet = startToTargetSetList.get(start); if (targetSet.contains(target)) { return true; } else { for (Integer candidate : targetSet) { if (dfs(startToTargetSetList, candidate, target)) { return true; } }
return false; } } }
|