题意:

给定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. Android:时间控件

    1.选择时间TimePicker    监听器:OnTimeChangedListener(obj,int hour,int minute); 常用: 获取时:getCurrentHour(). 获取 ...

  2. SQLite设置主键自动增长及插入语法

    SQLite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为 ...

  3. tophat输出结果junction.bed

    tophat输出结果junction.bed BED format       BED format provides a flexible way to define the data lines ...

  4. UVa 1213 (01背包变形) Sum of Different Primes

    题意: 选择K个质数使它们的和为N,求总的方案数. 分析: 虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧. d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = ...

  5. 8.21 usaco

    summary:6 bzoj1692://后缀数组就行了O(nlogn)c[30]会RE...注意!!! #include<cstdio> #include<cstring> ...

  6. Cacti 'graph_xport.php' SQL注入漏洞

    漏洞版本: Cacti < 0.8.8b 漏洞描述: Bugtraq ID:66555 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. Cact ...

  7. [swustoj 1091] 土豪我们做朋友吧

    土豪我们做朋友吧(1091) 问题描述: 人都有缺钱的时候,缺钱的时候要是有个朋友肯帮助你,那将是一件非常幸福的事情.有N个人(编号为1到N),一开始他们互相都不认识,后来发生了M件事情,事情分为2个 ...

  8. webstorm使用教程之 使用github

    详细说下webstorm下设置,首先确认webstorm是否为最新版,然后点击(file->setting->github) 填完后点击test,确保畅通... 点击以后会出现弹出框,会让 ...

  9. 在Azure HDInsight HBase集群中使用Thrift接口

    Sun wei  Wed, Feb 25 2015 2:17 AM Apache Thrift 是一种可扩展的跨语言服务接口,可以通过内置的代码生成引擎帮助创建跨语言服务类库,Apache HBase ...

  10. 在win2008中配置ServU

    因为08的防火墙要求比较高.很多端口都关闭,所以要设置防火墙. 首先设置入站规则 1.新建一条规则,规则类型选择“端口”,然后TCP,设置为20-21,60010-60020,然后允许链接,在配置文件 ...