Dragon Balls

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

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 A B就是把A球所在的城市中的球全部转移到B球所在的城市
输入Q A就是要输出A球所在的城市序号,A球所在城市的球的个数,A球移动的次数
 
 
 
 
 #include<cstdio>
#include<cstring>
#include<algorithm>
#define max 10002
using namespace std;
int father[max],ran[max],num[max];
int a,b; void init()
{
int i;
for(i=;i<=a;i++)
{
father[i]=i;//记录父节点
ran[i]=;//记录所在城市共有多少龙珠
num[i]=;//记录移动的次数
}
} int find(int x)
{
if(x==father[x]) return x;
int t=father[x];
father[x]=find(father[x]);//压缩路径 ,都指向根节点
num[x]+=num[t];//每个球移动的次数等于本身移动的个数加上父节点移动的次数
return father[x];
} void join(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
father[fx]=fy;//移动一个根节点到另一个根节点
ran[fy]+=ran[fx];//fy为根节点的总个数等于两个根节点拥有的个数相加
num[fx]=;//被移动的根节点第一次移动
}
} int main()
{
int i,N,m,n,cot=;
char c;
scanf("%d",&N);
while(N--)
{
scanf("%d%d",&a,&b);
getchar();
init();
printf("Case %d:\n",cot++);
for(i=;i<b;i++)
{
scanf("%c",&c);
if(c=='T')
{
scanf("%d%d",&m,&n);
getchar();
join(m,n);
}
else
{
scanf("%d",&m);
getchar();
int t=find(m);//要输出根节点的所有的个数
printf("%d %d %d\n",t,ran[t],num[m]);
}
}
}
return ;
}
 
 
 

Dragon Balls--hdu3635(并查集)的更多相关文章

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

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

  2. [HDOJ3635]Dragon Balls(并查集,路径压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3635 题意:有n个龙珠,n个城市.初始状态第i个龙珠在第i个城市里.接下来有两个操作: T A B:把 ...

  3. hdoj 3635 Dragon Balls【并查集求节点转移次数+节点数+某点根节点】

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

  4. HDU 3635:Dragon Balls(并查集)

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

  5. hdu 3635 Dragon Balls(并查集)

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

  6. Codeforces Round #245 (Div. 2) B. Balls Game 并查集

    B. Balls Game Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/430/problem ...

  7. *HDU3635 并查集

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

  8. hdoj--3635--Dragon Balls(并查集记录深度)

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

  9. Dragon Balls[HDU3635]

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

随机推荐

  1. Integer和Integer数据的大小比较

    public class Test{ public static void main(String[] args){ Integer i1 = 100; Integer i2 = 100; if(i1 ...

  2. JSTL: empty 可以减少很多繁冗的判空(转)

    ${empty student.name }Empty是判空为空返回的真不为空返回的是假 ${(empty student.name)? '空' : '非空'} <c:if test=" ...

  3. freebsd安装和图形界面安装

    通过上述的安装以后只有命令行界面,没有图形界面,如果想使用X Window就需要安装X 11和GNOME(或KDE). 1. 安装X 11(用root账户) 在确保虚拟机的CD-ROM加载了FreeB ...

  4. c# 控制IE浏览器

    原文 http://www.cnblogs.com/love2wllw/archive/2010/05/19/1739327.html 想写一个桌面程序,用C#.程序运行后,会用IE打开指定的网页,并 ...

  5. java时间比较

    public static void main(String[] args) throws Exception{//判断某个时间是否为当前时间 String dataStr="2014-07 ...

  6. Word Search II 解答

    Question Given a 2D board and a list of words from the dictionary, find all words in the board. Each ...

  7. Master Theorem

    Master theorem provides a solution in asymptotic terms to solve time complexity problem of most divi ...

  8. UVA 10047-The Monocycle(队列bfs+保存4种状态)

    题意:给你一张地图,S代表起点,T代表终点,有一个轮盘,轮盘平均分成5份,每往前走一格恰好转1/5,轮盘只能往前进,但可以向左右转90°,每走一步或是向左向右转90° 要花费1单位的时间,问最少的时间 ...

  9. svn local delete, incoming delete upon update 解决办法

    经常有人会说,树冲突是很难解决的一类冲突,其实一旦了解了其原理,要解决也不难.先回顾下对于树冲突的定义.     树冲突:当一名开发人员移动.重命名.删除一个文件或文件夹,而另一名开发人员也对它们进行 ...

  10. IOS 计算密码强度

    + (BOOL) judgeRange:(NSArray*)conditionArr Password:(NSString*)password { NSRange range; BOOL result ...