1
1
class UnionFind :
2
- def __init__ (self , n ) :
2
+ def __init__ (self , n : int ) -> None :
3
3
self .n = n
4
4
self .p = [- 1 ] * n
5
5
6
6
7
- def leader (self , a ) :
7
+ def leader (self , a : int ) -> int :
8
8
while self .p [a ] >= 0 :
9
9
a = self .p [a ]
10
10
return a
11
11
12
12
13
- def merge (self , a , b ) :
13
+ def merge (self , a : int , b : int ) -> int :
14
14
x = self .leader (a )
15
15
y = self .leader (b )
16
16
@@ -25,26 +25,34 @@ def merge(self, a, b):
25
25
26
26
return x
27
27
28
- def same (self , a , b ) :
28
+ def same (self , a : int , b : int ) -> bool :
29
29
return self .leader (a ) == self .leader (b )
30
30
31
- def size (self , a ):
31
+ def groups (self ) -> list :
32
+ member = [[] for _ in range (self .n )]
33
+ for i in range (self .n ):
34
+ member [self .leader (i )].append (i )
35
+ return member
36
+
37
+ def size (self , a : int ) -> int :
32
38
return - self .p [self .leader (a )]
33
39
40
+
34
41
def main () -> None :
35
- n , m = map (int , input ().split ())
42
+ N , M = map (int , input ().split ())
36
43
37
- uf = UnionFind (n )
44
+ UF = UnionFind (N )
38
45
39
46
for _ in range (m ):
40
- a , b = map (int ,input ().split ())
41
- uf .merge (a - 1 , b - 1 )
47
+ A , B = map (lambda x : int ( x ) - 1 ,input ().split ())
48
+ UF .merge (A , B )
42
49
43
50
ans = 0
44
- for i in range (n ):
45
- ans = max (ans , uf .size (i ))
51
+ for i in range (N ):
52
+ ans = max (ans , UF .size (i ))
46
53
47
54
print (ans )
48
55
56
+
49
57
if __name__ == "__main__" :
50
58
main ()
0 commit comments