HDU 3635 ( Dragon Balls)
来源:互联网 发布:火车票造假图片软件 编辑:程序博客网 时间:2024/06/13 22:37
#include<stdio.h>#include<string.h>int id[10010],trans[10001],Size[10001];int idq,idp,n,m;int ans[10001][3];char kind;int Quickfind(int a){ while(id[a]!=id[id[a]]){ trans[a]+=trans[id[a]]; id[a]=id[id[a]]; } return id[a];}void Quickution(int idq, int idp){ id[idq]=idp; Size[idp]+=Size[idq]; trans[idq]+=1;}int main(){ int i,j; int a,b; int ball; int num; scanf("%d",&num); int sum=0; while(num--){ int N=0; scanf("%d %d",&n,&m); memset(trans,0,sizeof(trans)); for(i=1;i<=n;i++){ Size[i]=1; } for(i=1;i<=n;i++){ id[i]=i; } for(i=0;i<m;i++){ getchar(); scanf("%c",&kind); if(kind=='T'){ scanf("%d %d",&a,&b); idq=Quickfind(a); idp=Quickfind(b); Quickution(idq,idp); } else { scanf("%d",&ball); idq=Quickfind(ball); ans[N][0]=id[idq]; ans[N][1]=Size[idq]; int b=Quickfind(ball); ans[N][2]=trans[ball]; N++; } } sum++; printf("Case %d:\n",sum); for(i=0;i<N;i++){ printf("%d %d %d\n",ans[i][0],ans[i][1],ans[i][2]); } } return 0;}并查集算法的应用:应为要记录转移次数,使得压缩结点的方法和原先的不一样了,原来是int Quickfind(int n){ while(n!=id[n]){ id[n]=id[id[n]];//压缩路径 n=id[n]; } return n;}现在是:int Quickfind(int n){ while(id[n]!=id[id[n]]){//如果当前节点的前一节点不是根节点的化,当前节点的转移次数就要更新,及加上前一节点的转移次数 trans[n]+=trans[id[n]]; id[n]=id[id[n]];//压缩路径 } return id[n];}
1 0
- hdu 3635 Dragon Balls
- HDU-3635 Dragon Balls
- HDU 3635 Dragon Balls
- HDU-3635-Dragon Balls
- hdu 3635 Dragon Balls
- HDU 3635 Dragon Balls
- HDU 3635 Dragon Balls
- HDU 3635 Dragon Balls
- HDU 3635 Dragon Balls
- hdu 3635 Dragon Balls
- hdu 3635 Dragon Balls
- HDU - 3635 Dragon Balls
- HDU 3635 Dragon Balls
- HDU 3635 Dragon Balls
- 3635 HDU Dragon Balls
- hdu 3635 Dragon Balls
- hdu-3635 Dragon Balls
- HDU 3635 Dragon Balls
- 使用AS编译时,报Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build
- Spring IOC的个人理解及Spring对bean的装配
- X86架构服务器
- 爬ip库
- Ubuntu16.04.1 安装Nginx
- HDU 3635 ( Dragon Balls)
- 获取手机相册图片显示并获取路径
- Spark集群环境的搭建
- java 蓝桥杯 字符串比较(填空题)
- SQL 并集、差集、交集、结果集排序
- 词汇的理解 —— 汉译英(术语)
- 【蓝桥】历届试题 剪格子
- 关于类的继承Constructor call must be the first statement in a constructor问题
- R语言使用分词包错