Advertisement
ogv

Untitled

ogv
Nov 5th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. class Solution {
  2. public List<List<Integer>> criticalConnections(int n, List<List<Integer>> connections) {
  3. Set<List<Integer>>[] adj = new HashSet[n];
  4. for (int i = 0; i < n; i++) adj[i] = new HashSet<List<Integer>>();
  5. for (List<Integer> conn: connections) adj[conn.get(0)].add(conn);
  6.  
  7. List<List<Integer>> critical = new LinkedList<>();
  8.  
  9. Set<List<Integer>> q = new HashSet<>();
  10. for (List<Integer> conn: connections) q.add(conn);
  11.  
  12. while (!q.isEmpty()) {
  13. List<Integer> edge = q.iterator().next();
  14. q.remove(edge);
  15.  
  16. System.out.println("Picked up edge " + edge.get(0) + "-" + edge.get(1));
  17.  
  18. Set<Integer> visitedNodes = new HashSet<>();
  19. int node = edge.get(0);
  20. visitedNodes.add(node);
  21. for (;;) {
  22. if (adj[node].isEmpty()) break;
  23.  
  24. List<Integer> nextEdge = adj[node].iterator().next();
  25. node = nextEdge.get(1);
  26.  
  27. if (visitedNodes.contains(node)) {
  28. System.out.println("Cycle at " + node);
  29. break;
  30. }
  31. visitedNodes.add(node);
  32. }
  33. }
  34.  
  35. return critical;
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement