hdu3635 Dragon Balls
来源:互联网 发布:it外包平台 编辑:程序博客网 时间:2024/05/16 10:00
智商拙计啊,这题看了解题报告都不是很懂,郁闷。。。。。
考虑了很长时间,才明白每个根结点最多只能移动一次,所以我们的目的就是把这一次push到各个子节点上就可以了,因为路径压缩的缘故,除了这次操作之外,所有的结点都挂在根节点上,完全水题一枚,被暴虐啊
code:
#include <cstdio>#include <cstring>using namespace std;const int MAXN = 10010;int n,m,fa[MAXN],cnt[MAXN],move[MAXN];void init(){ int i; for(i=1;i<=n;i++) { fa[i]=i; cnt[i]=1; move[i]=0; }}//一个根节点只能移动一次,所以只要把这个一次push下去就好了int find(int x){ if(fa[x]!=x) { int t=fa[x]; fa[x]=find(fa[x]); move[x]+=move[t]; } return fa[x];}void merge(int x,int y){ x=find(x); y=find(y); if(x!=y) { fa[x]=y; cnt[y]+=cnt[x]; move[x]=1; }}int main(){ int cas,i,k,a,b; char str[2]; scanf("%d",&cas); for(k=1;k<=cas;k++) { scanf("%d%d",&n,&m); init(); printf("Case %d:\n",k); for(i=1;i<=m;i++) { scanf("%s",str); if(str[0]=='T') { scanf("%d%d",&a,&b); merge(a,b); }else{ scanf("%d",&a); b=find(a); printf("%d %d %d\n",b,cnt[b],move[a]); } } } return 0;}
- hdu3635 Dragon Balls
- hdu3635 Dragon Balls
- hdu3635 Dragon Balls
- hdu3635 Dragon Balls
- HDU3635 Dragon Balls
- hdu3635 Dragon Balls
- hdu3635——Dragon Balls
- HDU3635 Dragon Balls 并查集
- HDU3635 Dragon Balls(并查集)
- hdu3635 Dragon Balls--并查集
- HDU3635 Dragon Balls(并查集)
- HDU3635:Dragon Balls(并查集)
- Dragon Balls(hdu3635带权并查集)
- 【hdu3635】Dragon Balls —— 并查集
- HDU3635 Dragon Balls 解题报告【带权并查集】
- 带权并查集--hdu3635 Dragon Balls
- Dragon Balls
- Dragon Balls
- C# DataTime Format
- android生成条码 并转换为Bitmap
- 借我一生
- linux下安装subversion遇到权限问题
- IO流
- hdu3635 Dragon Balls
- 写给即将入行的程序员的一封信
- SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法
- 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
- java绘制点阵数字(LED数字显示),转载源码
- 李开复:怎样领导聪明人
- 操作系统各大公司笔试题汇总
- android Bitmap
- hacmp rshexec: cannot connect to node