1 #include<stdio.h>
2 #include<string.h>
3 const int M = 3e4 + 4 ;
4 int f[M] , up[M] , tot[M] ;
5 int p ;
6 int s[2] ;
7 int u , v ;
8
9 int find (int u)
10 {
11 if (f[u] == u) return f[u] ;
12 int t = f[u] ;
13 f[u] = find (f[u]) ;
14 up[u] += up[t] ;
15 return f[u] ;
16 }
17
18 void Union (int u , int v)
19 {
20 int _u = find (u) , _v = find (v) ;
21 if (_u != _v) {
22 f[_v] = _u ;
23 up[_v] += tot[_u] ;
24 tot[_u] += tot[_v] ;
25 }
26 }
27
28 int main ()
29 {
30 //freopen ("a.txt" , "r" , stdin ) ;
31 for (int i = 0 ; i < M ; i ++) {
32 f[i] = i ;
33 up[i] = 0 ;
34 tot[i] = 1 ;
35 }
36 scanf ("%d" , &p) ;
37 while (p --) {
38 scanf ("%s" , s) ;
39 if(s[0] == ‘M‘) {
40 scanf ("%d%d" , &u , &v) ;
41 Union (u , v) ;
42 }
43 else if (s[0] == ‘C‘) {
44 scanf ("%d" , &u) ;
45 int _u = find (u) ;
46 printf ("%d\n" , tot[_u] - up[u] - 1) ;
47 }
48 }
49 return 0 ;
50 }