题意:

给定n个点 oper个操作

每个点有1个龙珠

下面2种操作:

T u v 把u点所有龙珠搬到v

Q u  问u点当前所在城市 u点所在城市有几个龙珠 u点被移动几次

思路:

并查集可以求出 u 点所在城市,记录每个点的 son(子节点数)可以求出 某城市的龙珠数量

用step 记录每个点被移动了几次

#include<stdio.h>
#include<string.h> inline int Max(int a,int b){return a>b?a:b;}
#define N 100001
struct node{
int step, parent, son;
}a[N];
char s[2];
int find(int x){
if(x==a[x].parent)return x;
int temp = a[x].parent;
a[x].parent = find(a[x].parent);
a[x].step += a[temp].step;
return a[x].parent;
}
void Union(int x, int y){
int fx = find(x), fy = find(y);
if(fx == fy)return;
a[fx].parent = fy;
a[fx].step ++;
a[fy].son += a[fx].son;
a[fx].son = 0;
}
int main(){
int T, Cas = 1, n, oper, i, j, u, v; scanf("%d",&T);
while(T--){
scanf("%d %d",&n,&oper);
printf("Case %d:\n", Cas++);
for(i = 1; i<= n; i++)
{
a[i].son = 1;
a[i].parent = i;
a[i].step = 0;
}
while(oper--){
scanf("%s",s);
if(s[0] == 'T')
{
scanf("%d %d",&u,&v);
Union(u, v);
}
else
{
scanf("%d",&u);
int ans = find(u);
printf("%d %d %d\n",ans, a[ ans ].son, a[u].step);
}
}
}
return 0;
}

HDU 3635 并查集+路径压缩+记录每个点移动次数的更多相关文章

  1. HDOJ 3635 并查集- 路径压缩,带秩合并

    思路来源:http://blog.csdn.net/niushuai666/article/details/6990421 题目大意: 初始时,有n个龙珠,编号从1到n,分别对应的放在编号从1到n的城 ...

  2. hdu 1558 线段相交+并查集路径压缩

    Segment set Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. 并查集+路径压缩(poj1988)

    http://poj.org/problem?id=1988 Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submiss ...

  4. 【数轴涂色+并查集路径压缩+加速】C. String Reconstruction

    http://codeforces.com/contest/828/problem/C [题意] [思路] 因为题目保证一定有解,所有优化时间复杂度的关键就是不要重复染色,所以我们可以用并查集维护区间 ...

  5. 并查集 + 路径压缩(经典) UVALive 3027 Corporative Network

    Corporative Network Problem's Link Mean: 有n个结点,一开始所有结点都是相互独立的,有两种操作: I u v:把v设为u的父节点,edge(u,v)的距离为ab ...

  6. - > 并查集+路径压缩(详解)(第一节)

    先举一个友爱的例子解释一下并查集: 话说江湖上散落着各式各样的大侠,有上千个之多. 他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架.但大侠们有一个优点就是讲义 ...

  7. PAT甲级1013题解——并查集+路径压缩

    题目分析: 本题初步浏览题目就知道是并查集的模板题,数据输入范围N为1~1000,则M的范围为0~1000^2,通过结构体记录每一对连线的关系,p[]数组记录每个节点的跟,对于k次查询,每次都要重新维 ...

  8. LA 并查集路径压缩

    题目大意:有n个节点,初始时每个节点的父亲节点都不存在.有两种操作 I u v:把点节点u的父亲节点设为v,距离为|u-v|除以1000的余数.输入保证执行指令前u没有父亲节点. E u:询问u到根节 ...

  9. snnu(1110) 传输网络 (并查集+路径压缩+离线操作 || 线段树)

    1110: 传输网络 Time Limit: 3 Sec  Memory Limit: 512 MBSubmit: 43  Solved: 18[Submit][Status][Web Board] ...

随机推荐

  1. js监听输入框值的即时变化onpropertychange、oninput

    js监听输入框值的即时变化onpropertychange.oninput 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感. // //   要达到的效果 ...

  2. 安装Ubuntu双系统系列——安装中文输入法

    Ubuntu 12.04中文输入法的安装 Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/五笔等),Fcitx,Ibus,Scim等.其中Scim和Ibus是输入法框架.在Ubuntu的中文 ...

  3. C++中的namespace用法

    关键字namespace定义了一个名字空间,里面的变量和函数,声明在此名字空间外使用须在前面加名字空间名称.例如: #include<iostream.h>namespace my{ in ...

  4. 微信5.4 AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8" ?> - <manifest android:versionCode ...

  5. LINUX Find命令使用

    LINUX Find命令使用 ====================================================== find   -name april*            ...

  6. UVa 129 (回溯法) Krypton Factor

    回溯法确实不是很好理解掌握的,学习紫书的代码细细体会. #include <cstdio> ]; int n, L, cnt; int dfs(int cur) { if(cnt++ == ...

  7. android应用分析之apk文件结构

            实际上,一个APK文件就是一个.zip格式的压缩包,我们可以用解压缩工具打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码.一个典型的ap ...

  8. jquery放大镜

    效果体验:http://runjs.cn/detail/dvygyp5t demo下载 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  9. 【idea】移动下载站

    硬件: 1.Mac或 Linux台 2.300M 无线TP-LINK TL-WR802N AP无密码,与 Mac 同一个网段,Mac开 rails 应用 扫一扫页面,手机下载.OK Mac 搭建ROR ...

  10. CSLA的项目结构(一)

    由于我也是边看边学,在很多概念不是很清晰的情况下,也不好将书中的大段内容全部摘抄过来,所以结合项目源码先分析再总结,就成目前比较可行方案,第一篇先从项目结构入手. 项目源码下载后,主要的功能集中在Co ...