原题
#7,#8,TLE
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e6+5;
int f[MAXN],m,n,x,y,many[MAXN];
void innit()
{
for(int i = 1;i < MAXN;i++)
{
f[i] = i;
many[i] = 1;
}
}
int find_f(int x)
{
if(x != f[x])
return f[x] = find_f(f[x]);
return f[x];
}
void join(int x,int y)
{
int fx = find_f(x),fy = find_f(y);
if(fx != fy)
{
f[fy] = fx;
many[fx] += many[fy];
}
}
int main()
{
innit();
scanf("%d%d",&n,&m);
for(int i = 0;i < m;i++)
{
char k;
cin >> k;
if(k == 'M')
{
scanf("%d%d",&x,&y);
join(x,y);
}
if(k == 'Q')
{
scanf("%d",&x);
cout << many[find_f(x)] << endl;
}
}
return 0;
}