标签:des style http color os strong io 数据
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 31102 | Accepted: 9583 |
Description
Input
Output
Sample Input
1 5 5 A 1 2 D 1 2 A 1 2 D 2 4 A 1 4
Sample Output
Not sure yet. In different gangs. In the same gang.
Source
题目大意:
解题思路:T组测试数据,n个人,m组询问,D a b 表示 a,b 不在同一个gang(虽然不知道gang是什么意思?) ,A a b表示a和b的关系。
解题代码:只需要并查集,再加入一个enemy数组记录某人的一个敌人即可。
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=110000;
int father[maxn],enemy[maxn],n,m;
int find(int x){
if(father[x]!=x){
father[x]=find(father[x]);
}
return father[x];
}
void combine(int x,int y){
int a=find(x),b=find(y);
father[b]=a;
}
void solve(){
char ch;
int a,b;
while(m-- >0){
getchar();
scanf("%c%d%d",&ch,&a,&b);
//cout<<ch<<"->"<<a<<"->"<<b<<endl;
if(ch=='D'){
if(enemy[a]!=-1) combine(enemy[a],b);
if(enemy[b]!=-1) combine(enemy[b],a);
enemy[a]=b;
enemy[b]=a;
}else{
if(enemy[a]==-1 || enemy[b]==-1 ) printf("Not sure yet.\n");
else{
if(find(a)==find(b)) printf("In the same gang.\n");
else if(find(enemy[a])==find(b) || find(a)==find(enemy[b]) ) printf("In different gangs.\n");
else printf("Not sure yet.\n");
}
}
}
}
int main(){
int t;
scanf("%d",&t);
while(t-- >0){
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++){
father[i]=i;
enemy[i]=-1;
}
solve();
}
return 0;
}
POJ 1703 Find them, Catch them (数据结构-并查集),布布扣,bubuko.com
POJ 1703 Find them, Catch them (数据结构-并查集)
标签:des style http color os strong io 数据
原文地址:http://blog.csdn.net/a1061747415/article/details/38302345