1 solutions
-
0
C++ :
#include <cstdio> #include <cstdlib> int size[1000001],f[1000001],d[1000001]; int inf=30001; int find(int x) { if(f[x]==x) { return x; } int t1=f[x]; int t2=find(f[x]); f[x]=t2; d[x]+=d[t1]; return t2; } int main() { int n=0; scanf("%d",&n); for(int i=1;i<=inf;i++) { f[i]=i; size[i]=1; } for(int i=1;i<=n;i++) { char t[5]; int x=0,y=0; scanf("%s %d %d",t+1,&x,&y); int tx=find(x),ty=find(y); if(t[1]=='M') { f[tx]=ty; d[tx]=size[ty]; size[ty]+=size[tx]; size[tx]=0; } else if(t[1]=='C') { if(tx!=ty) { printf("-1\n"); } else { printf("%d\n",abs(d[x]-d[y])-1); } } } return 0; }
- 1
Information
- ID
- 10167
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By