1
1
export class Solution {
2
- /**
3
- * @param {number } n - the number of vertices
4
- * @param {number[][] } edges - the edges of undirected graph
5
- * @return {number } - the number of connected components
6
- */
7
- countComponents ( n , edges ) {
8
- const par = Array . from ( { length : n } , ( _ , i ) => i ) ;
9
- const rank = Array ( n ) . fill ( 1 ) ;
10
-
11
- const find = ( n1 ) => {
12
- let res = n1 ;
13
- while ( res !== par [ res ] ) {
14
- par [ res ] = par [ par [ res ] ] ; // path compression
15
- res = par [ res ] ;
16
- }
17
- return res ;
18
- } ;
19
-
20
- const union = ( n1 , n2 ) => {
21
- const p1 = find ( n1 ) ;
22
- const p2 = find ( n2 ) ;
23
- if ( p1 === p2 ) return 0 ;
24
-
25
- if ( rank [ p2 ] > rank [ p1 ] ) {
26
- par [ p1 ] = p2 ;
27
- rank [ p2 ] += rank [ p1 ] ;
28
- } else {
29
- par [ p2 ] = p1 ;
30
- rank [ p1 ] += rank [ p2 ] ;
31
- }
32
-
33
- return 1 ;
34
- } ;
35
-
36
- let res = n ;
37
- for ( const [ n1 , n2 ] of edges ) {
38
- res -= union ( n1 , n2 ) ;
2
+ /**
3
+ * @param {number } n - the number of vertices
4
+ * @param {number[][] } edges - the edges of undirected graph
5
+ * @return {number } - the number of connected components
6
+ */
7
+ countComponents ( n , edges ) {
8
+ const par = Array . from ( { length : n } , ( _ , i ) => i ) ;
9
+ const rank = Array ( n ) . fill ( 1 ) ;
10
+
11
+ const find = ( n1 ) => {
12
+ let res = n1 ;
13
+ while ( res !== par [ res ] ) {
14
+ par [ res ] = par [ par [ res ] ] ; // path compression
15
+ res = par [ res ] ;
39
16
}
40
-
41
17
return res ;
18
+ } ;
19
+
20
+ const union = ( n1 , n2 ) => {
21
+ const p1 = find ( n1 ) ;
22
+ const p2 = find ( n2 ) ;
23
+ if ( p1 === p2 ) return 0 ;
24
+
25
+ if ( rank [ p2 ] > rank [ p1 ] ) {
26
+ par [ p1 ] = p2 ;
27
+ rank [ p2 ] += rank [ p1 ] ;
28
+ } else {
29
+ par [ p2 ] = p1 ;
30
+ rank [ p1 ] += rank [ p2 ] ;
31
+ }
32
+
33
+ return 1 ;
34
+ } ;
35
+
36
+ let res = n ;
37
+ for ( const [ n1 , n2 ] of edges ) {
38
+ res -= union ( n1 , n2 ) ;
42
39
}
40
+
41
+ return res ;
43
42
}
44
-
43
+ }
44
+
0 commit comments