题意:

给定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. eclipse中的输入提示怎么设置

    对于大多数的开发人员来说,打代码是一件非常繁琐的事情,eclipse中为我们提供了自动提示的功能,但是默认的提示只有当我们输入小数点后才能出现提示框,那么我们如何设置eclipse,能够让它为我们提示 ...

  2. Java SE7新特性之try-with-resources语句

       try-with-resources语句是一个声明一个或多个资源的 try 语句.一个资源作为一个对象,必须在程序结束之后随之关闭. try-with-resources语句确保在语句的最后每个 ...

  3. 条件与(&&)和逻辑与(&)以及条件或(||)和逻辑或(|)区别

    条件与(&&)和逻辑与(&)以及条件或(||)和逻辑或(|)区别在于它们的运算结果是不相同的. 条件与(&&)和条件或(||)采用的是所谓的"短路规则 ...

  4. Debug 和 Release 编译方式的本质区别

    一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...

  5. git clone 出错SSL certificate problem, verify that the CA cert is OK.

    先调用这个 export GIT_SSL_NO_VERIFY=true 之后再执行git clone

  6. Visual C#每一次新版本的变化

    What's New in Visual C# .NET 2003[Visual Studio .NET 2003] What's New in Visual C# 2005 What's New i ...

  7. 8 Things Every Person Should Do Before 8 A.M.

    https://medium.com/@benjaminhardy/8-things-every-person-should-do-before-8-a-m-cc0233e15c8d 1. Get A ...

  8. poj1151Atlantis(离散化+扫描线)

    http://poj.org/problem?id=1151 http://www.cnblogs.com/kane0526/archive/2013/02/26/2934214.html这篇博客写的 ...

  9. bzoj1937

    这道题没弄明白 初始模型很好想,是用到了最小生成树的性质 加入非树边后树上形成的环,非树边一定大于等于任意树边 然后考虑树边一定是缩小,非树边一定是增大 有di+wi>=dj-wj wi+wj& ...

  10. Java泛型类与类型擦除

    转载自:http://blog.csdn.net/lonelyroamer/article/details/7868820 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型. ...