博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1703_Find them, Catch them_并查集
阅读量:5127 次
发布时间:2019-06-13

本文共 2225 字,大约阅读时间需要 7 分钟。

Find them, Catch them
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 42451   Accepted: 13059

Description

The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, Gang Dragon and Gang Snake. However, the police first needs to identify which gang a criminal belongs to. The present question is, given two criminals; do they belong to a same clan? You must give your judgment based on incomplete information. (Since the gangsters are always acting secretly.)
 
Assume N (N <= 10^5) criminals are currently in Tadu City, numbered from 1 to N. And of course, at least one of them belongs to Gang Dragon, and the same for Gang Snake. You will be given M (M <= 10^5) messages in sequence, which are in the following two kinds: 
1. D [a] [b]  where [a] and [b] are the numbers of two criminals, and they belong to different gangs. 
2. A [a] [b]  where [a] and [b] are the numbers of two criminals. This requires you to decide whether a and b belong to a same gang. 

Input

The first line of the input contains a single integer T (1 <= T <= 20), the number of test cases. Then T cases follow. Each test case begins with a line with two integers N and M, followed by M lines each containing one message as described above.

Output

For each message "A [a] [b]" in each case, your program should give the judgment based on the information got before. The answers might be one of "In the same gang.", "In different gangs." and "Not sure yet."

Sample Input

15 5A 1 2D 1 2A 1 2D 2 4A 1 4

Sample Output

Not sure yet.In different gangs.In the same gang.

Source

1 #include 
2 #include
3 4 #define MAX_N 1000000+5 5 6 using namespace std; 7 8 int par[MAX_N];//父节点 9 int depth[MAX_N];//深度10 11 void init(int n){12 for(int i=0;i<=n;i++){13 par[i]=i;14 depth[i]=1;15 }16 }17 int find_father(int t){18 if(t==par[t]){19 return t;20 }else{21 return par[t]=find_father(par[t]);22 //实现了路径压缩23 }24 }25 void unite(int t1,int t2){26 int f1=find_father(t1);27 int f2=find_father(t2);28 if(f1==f2){29 return ;30 }31 if(depth[f1]

 

转载于:https://www.cnblogs.com/TWS-YIFEI/p/6039313.html

你可能感兴趣的文章
XML与数据库pdf
查看>>
stegsolve下载
查看>>
像计算机科学家一样思考Python pdf
查看>>
深度探索C++对象模型.pdf
查看>>
网络营销教程—SEO 第二章 搜索引擎(第一节)
查看>>
ADOdb
查看>>
ZooKeeper集群搭建
查看>>
Android使用LocalSocket抓取数据
查看>>
ubuntu 10.10显示grub菜单
查看>>
python基础学习(一)
查看>>
门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
查看>>
json数据的转换
查看>>
在路由器 RT-AC68U 使用自定义 DDNS 用 3322.org 动态域名的方法
查看>>
2017年个人总结
查看>>
JavaScript笔录
查看>>
第2章 jQuery的选择器
查看>>
Docker示例命令
查看>>
Linux下定时任务Crontab的使用
查看>>
NLog简单使用
查看>>
MySQL入门很简单-触发器
查看>>