带权并查集模板2(银河英雄传说)

这道题有30000个列。。。

所以说带权并查集在原模板的基础上就必须再添一个num数组,num[i]表示i队列的长度

算是涨了见识了。。。

code:

#include<cstdio> #include<iostream> #include<cmath> using namespace std; int fa[30005],val[30005],num[30005]; int find(int x) { if(fa[x]!=x) { int t=fa[x]; fa[x]=find(fa[x]); val[x]+=val[t]; } return fa[x]; } int main() { int T; scanf("%d",&T); for(int i=1;i<=30000;i++) { fa[i]=i; num[i]=1; } char pd; int x,y; while(T--) { cin>>pd; scanf("%d%d",&x,&y); if(pd=='M') { int px=find(x); int py=find(y); if(px!=py) { fa[px]=py; val[px]+=num[py]; num[py]+=num[px]; num[px]=0; } //printf("qwq\n"); } else if(pd=='C') { int px=find(x); int py=find(y); if(px!=py) { printf("-1\n"); } else { int tmp; tmp=abs(val[y]-val[x]); printf("%d\n",tmp-1); } } } return 0; } 
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-18 22:30
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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