Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public List<List<Integer>> criticalConnections(int n, List<List<Integer>> connections) {
- Set<List<Integer>>[] adj = new HashSet[n];
- for (int i = 0; i < n; i++) adj[i] = new HashSet<List<Integer>>();
- for (List<Integer> conn: connections) adj[conn.get(0)].add(conn);
- List<List<Integer>> critical = new LinkedList<>();
- Set<List<Integer>> q = new HashSet<>();
- for (List<Integer> conn: connections) q.add(conn);
- while (!q.isEmpty()) {
- List<Integer> edge = q.iterator().next();
- q.remove(edge);
- System.out.println("Picked up edge " + edge.get(0) + "-" + edge.get(1));
- Set<Integer> visitedNodes = new HashSet<>();
- int node = edge.get(0);
- visitedNodes.add(node);
- for (;;) {
- if (adj[node].isEmpty()) break;
- List<Integer> nextEdge = adj[node].iterator().next();
- node = nextEdge.get(1);
- if (visitedNodes.contains(node)) {
- System.out.println("Cycle at " + node);
- break;
- }
- visitedNodes.add(node);
- }
- }
- return critical;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement