标签:get ace from tchar case 保存 cst center info
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 46763 | Accepted: 14398 |
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
题意:
有一群人属于两个队伍每行给出两个人说明他们不属于同一个队问给出两个人他们属于一个队还是不同的队或是不确定
思路:
并查集把给出的人分成几个集合每个集合之间的人的关系不确定,对同一个集合保存和本人不为同一队的人本着敌人的敌人便是朋友的原则用并查集同一集合为同一队不同集合为不同队
#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int M = 200010; int f[M],T,n,m,enemy[M]; int find(int x) { if(f[x]!=x) f[x]=find(f[x]); return f[x]; } void merge(int a,int b) { int fa=find(a), fb=find(b); if(fa!=fb) f[fb]=fa; } void work() { int a,b; scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) f[i]=i; memset(enemy,0,sizeof(enemy)); for(int i=1; i<=m; i++) { char type; getchar(); scanf("%c%d%d",&type,&a,&b); if(type==‘D‘) { if(enemy[a]) merge(enemy[a],b); if(enemy[b]) merge(enemy[b],a); enemy[a]=b; enemy[b]=a; } else { if(find(a)==find(enemy[b])) printf("In different gangs.\n"); else if(find(a)==find(b)) printf("In the same gang.\n"); else printf("Not sure yet.\n"); } } return ; } int main() { scanf("%d",&T); while(T--) work(); return 0; }
自己选的路,跪着也要走完!!!
(POJ 1703)Find them, Catch them
标签:get ace from tchar case 保存 cst center info
原文地址:http://www.cnblogs.com/wsdestdq/p/7324220.html