File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ List <int > findRedundantConnection (List <List <int >> edges) {
3+ List <int > parent = [];
4+ for (int i = 0 ; i < edges.length + 1 ; i++ ) {
5+ parent.add (i);
6+ }
7+
8+ List <int > sizes = List .filled (edges.length + 1 , 1 );
9+
10+ int find (int n) {
11+ int p = parent[n];
12+
13+ while (p != parent[p]) {
14+ parent[p] = parent[parent[p]];
15+ p = parent[p];
16+ }
17+
18+ return p;
19+ }
20+
21+ bool union (int node1, int node2) {
22+ int parentOf1 = find (node1);
23+ int parentOf2 = find (node2);
24+
25+ if (parentOf1 == parentOf2) {
26+ return false ;
27+ } else if (sizes[parentOf1] > sizes[parentOf2]) {
28+ parent[parentOf2] = parentOf1;
29+ sizes[parentOf1] += sizes[parentOf2];
30+ } else {
31+ parent[parentOf1] = parentOf2;
32+ sizes[parentOf2] += sizes[parentOf1];
33+ }
34+
35+ return true ;
36+ }
37+
38+ for (List <int > edge in edges) {
39+ int node1 = edge[0 ];
40+ int node2 = edge[1 ];
41+ if (! union (node1, node2)) {
42+ return [node1, node2];
43+ }
44+ }
45+
46+ return [];
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments