带权并查集模板

#include<cstdio> #include<iostream> using namespace std; int f[30005],d[30005],s[30005]; int find(int x) { if(f[x]==x)return x; int tmp=find(f[x]); d[x]+=d[f[x]]; return f[x]=tmp; } void move(int x,int y) { int sx=find(x); int sy=find(y); if(sx==sy)return ; f[sx]=sy; d[sx]=s[sy]; s[sy]+=s[sx]; } void search(int x) { find(x); printf("%d\n",d[x]); } int main() { int q; scanf("%d",&q); for(int i=1;i<=30000;i++) { f[i]=i; d[i]=0; s[i]=1; } while(q--) { char pd; cin>>pd; if(pd=='M') { int x,y; scanf("%d%d",&x,&y); move(x,y); } else if(pd=='C') { int x; scanf("%d",&x); search(x); } } return 0; } 
全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务