hdu 3635 并查集
来源:互联网 发布:修改歌曲信息软件 编辑:程序博客网 时间:2024/05/20 15:41
//// main.cpp// 5.1.6//// Created by Fangpin on 15/3/2.// Copyright (c) 2015年 Fangpin. All rights reserved.//#include <iostream>#include <cstring>using namespace std;int set[10003],sum[10003],times[10003];int find(int x){ if(x==set[x]) return x; else{ int tem=set[x]; set[x]=find(set[x]); times[x]+=times[tem]; } return set[x];}int main(int argc, const char * argv[]) { // insert code here... int t,n,q; scanf("%d",&t); for(int ca=1;ca<=t;++ca){ scanf("%d%d",&n,&q); for(int i=0;i<=n;++i){ set[i]=i; sum[i]=1; times[i]=0; } printf("Case %d:\n",ca); while(q--){ char s[5]; scanf("%s",s); if(s[0]=='T'){ int a,b; scanf("%d%d",&a,&b); int fa=find(a),fb=find(b); if(fa!=fb){ set[fa]=fb; times[fa]++; sum[fb]+=sum[fa]; sum[fa]=0; } } else{ int a; scanf("%d",&a); int fa=find(a); printf("%d %d %d\n",fa,sum[fa],times[a]); } } } return 0;}
并查集的运用,每次合并的时候注意多加一个记录元素个数的域。
本题较难的是第三个问题。容易发现,如果不加优化的话,该球被移动的次数恰是该数所在数的树中位置的节点深度。但为了减少时间复杂度,避免退化树的出现,应该加入路径压缩。
0 0
- hdu 3635 并查集
- hdu 3635 并查集
- hdu 3635 并查集
- hdu 3635 并查集
- HDU 3635 并查集
- HDU 3635 Dragon Balls(并查集)
- hdu 3635 Dragon Balls(并查集)
- HDU 3635 Dragon Balls - 并查集
- hdu 3635 带权并查集
- HDU 3635 带权并查集
- hdu 3635 Dragon Balls 并查集
- HDU 3635 Dragon Balls(并查集)
- hdu-3635 Dragon Balls(并查集)
- HDU 3635 Dragon balls -并查集
- hdu Dragon Balls 3635【并查集】
- hdu 3635(并查集)
- HDU 3635 Dragon Balls(并查集)
- 带权并查集(hdu 3635,hdu 2818)
- 运行python时报错:Non-ASCII character '\xe5' in file问题解决
- 通过反射读取配置文件,来打印图形
- 黑马程序员------[C]字符串操作
- 调度器的使用
- 邻接表求有向图各顶点的入度和出度 (图论基础)
- hdu 3635 并查集
- AFNetWorking2.0 post 出现code=-1016错误怎么解决?
- 公司学习----JS获取URL传过来的值
- UVa 216 网络连线
- 3个收缩/展开/折叠的js代码
- Oracle判断是否闰年
- 异常处理与MiniDump详解(4) MiniDump
- Matlab中使用varargin来实现参数可变的函数
- c# .net 如何把byte类型仅仅转换成string而不改变其内容