Dragon Balls

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4384    Accepted Submission(s):
1673

Problem Description
Five hundred years later, the number of dragon balls
will increase unexpectedly, so it's too difficult for Monkey King(WuKong) to
gather all of the dragon balls together.

His country
has N cities and there are exactly N dragon balls in the world. At first, for
the ith dragon ball, the sacred dragon will puts it in the ith city. Through
long years, some cities' dragon ball(s) would be transported to other cities. To
save physical strength WuKong plans to take Flying Nimbus Cloud, a magical
flying cloud to gather dragon balls.
Every time WuKong will collect the
information of one dragon ball, he will ask you the information of that ball.
You must tell him which city the ball is located and how many dragon balls are
there in that city, you also need to tell him how many times the ball has been
transported so far.
 
Input
The first line of the input is a single positive
integer T(0 < T <= 100).
For each case, the first line contains two
integers: N and Q (2 < N <= 10000 , 2 < Q <= 10000).
Each of the
following Q lines contains either a fact or a question as the follow
format:
  T A B : All the dragon balls which are in the same city with A have
been transported to the city the Bth ball in. You can assume that the two cities
are different.
  Q A : WuKong want to know X (the id of the city Ath ball is
in), Y (the count of balls in Xth city) and Z (the tranporting times of the Ath
ball). (1 <= A, B <= N)
 
Output
For each test case, output the test case number
formated as sample output. Then for each query, output a line with three
integers X Y Z saparated by a blank space.
 
Sample Input
2
3 3
T 1 2
T 3 2
Q 2
3 4
T 1 2
Q 1
T 1 3
Q 1
 
Sample Output
Case 1:
2 3 0
Case 2:
2 2 1
3 3 2
 
题意:遇到T时输入两个数x,y代表把x城市的龙珠转移到y城市,遇到Q输入a  求第a个龙珠所在的城市b,求b城市的龙珠总数,求
        第a个龙珠的转移次数
题解:最难在于求龙珠的转移次数,当龙珠的父节点转移时,龙珠也跟着转移
#include<stdio.h>
#include<string.h>
#define MAX 20000
int set[MAX];
int path[MAX];
int time[MAX];
int find(int fa)
{
int t;
if(fa==set[fa])
return fa;
t=set[fa];
set[fa]=find(set[fa]);
time[fa]+=time[t];
return set[fa];
}
void mix(int x,int y)
{
int fx;
int fy;
fx=find(x);
fy=find(y);
if(fx!=fy)
{
set[fx]=fy;
path[fy]+=path[fx];
time[fx]++;
}
}
int main()
{
int t,n,m,x,y,b,i;
char a;
scanf("%d",&t);
int k=0;
while(t--)
{
scanf("%d%d",&n,&m);
printf("Case %d:\n",++k);
for(i=1;i<=n;i++)
{
set[i]=i;
path[i]=1;
time[i]=0;
}
while(m--)
{
getchar();
scanf("%c %d",&a,&x);
if(a=='T')
{
scanf("%d",&y);
mix(x,y);
}
else
{
y=find(x);//此处必须用一个变量值来表示find(x)
printf("%d %d %d\n",y,path[y],time[x]);
}
}
}
return 0;
}

  

hdoj 3635 Dragon Balls【并查集求节点转移次数+节点数+某点根节点】的更多相关文章

  1. hdu 3635 Dragon Balls(并查集)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  2. hdu 3635 Dragon Balls(加权并查集)2010 ACM-ICPC Multi-University Training Contest(19)

    这道题说,在很久很久以前,有一个故事.故事的名字叫龙珠.后来,龙珠不知道出了什么问题,从7个变成了n个. 在悟空所在的国家里有n个城市,每个城市有1个龙珠,第i个城市有第i个龙珠. 然后,每经过一段时 ...

  3. Codeforces Round #360 (Div. 1) D. Dividing Kingdom II 并查集求奇偶元环

    D. Dividing Kingdom II   Long time ago, there was a great kingdom and it was being ruled by The Grea ...

  4. C. Edgy Trees Codeforces Round #548 (Div. 2) 并查集求连通块

    C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  5. HDU 3018 Ant Trip (并查集求连通块数+欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题目大意:有n个点,m条边,人们希望走完所有的路,且每条道路只能走一遍.至少要将人们分成几组. ...

  6. hdu 3635 Dragon Balls(并查集应用)

    Problem Description Five hundred years later, the number of dragon balls will increase unexpectedly, ...

  7. hdu 3635 Dragon Balls (带权并查集)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. HDU 3635 Dragon Balls(超级经典的带权并查集!!!新手入门)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. hdu 3635 Dragon Balls(并查集)

    题意: N个城市,每个城市有一个龙珠. 两个操作: 1.T A B:A城市的所有龙珠转移到B城市. 2.Q A:输出第A颗龙珠所在的城市,这个城市里所有的龙珠个数,第A颗龙珠总共到目前为止被转移了多少 ...

随机推荐

  1. 制作Net程序的帮助文档--总结

    一.工具的准备 目前,一般采用Sandcastle Help File Builder工具来制作.Net程序帮助文档,该工具主要是利用Xml文档里的信息以及DLL文件来生成完整的帮助文档.在Visua ...

  2. gem install 出现Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://ruby.taobao.org

    这几天在ubuntu14.04.1 64位上安装rails的时候,由于大天朝的原因,更换了淘宝源,然后执行 gem install rails 这个时候,总是会提示 Errno::ECONNRESET ...

  3. Go语言探险思考笔记

    最近接触对象存储,国际上鼎鼎有名的Amazon S3还有Google Cloud Service在国内由于防火墙还有机房过远的问题,并不能投入生产使用.国内有名的对象存储,大家众所周知的七牛云,后台就 ...

  4. adb找不到设备

    提示信息如下所示: adb server is out of date.killing... adb server didn't ACK *failed to start daemon * error ...

  5. gnuplot使用

    直接用yum安装gnuplot即可,例如 sudo sh -c "yum install gnuplot.x86_64 " 安装以后就可以使用了 编写gnuplot脚本 # grp ...

  6. yarn源代码

    Modules-------YARN consists of multiple modules. The modules are listed below as per the directory s ...

  7. 编程思想—控制反转(IOC)及依赖注入(DI)

    1.什么是依赖注入 在面向对象的编程语言中,一个对象的行为方法往往需要外界的对象的行为协助才能完成. 例如:小李去ATM机取钱,那小李的取钱的整个行为的完成需要ATM实例取款行为的协助才能完成. pu ...

  8. Unity干中学——如何实现游戏截图?

    using UnityEngine; using System.Collections; using System.IO; public class ScreenShot : MonoBehaviou ...

  9. 转:使用Tengine替代Nginx作为负载均衡服务器

    原文来自于:http://heylinux.com/archives/2938.html Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级 ...

  10. JBoss for luna

    Redhat官方手顺 貌似已经404了,搬运地址 我的Eclipse是Luna,每次进入Eclipse Market去装 http://marketplace.eclipse.org/content/ ...