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