码迷,mamicode.com
首页 > 其他好文 > 详细

5月14日

时间:2016-05-15 02:26:54      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

poj1703

题意:有两个帮派,给定一些操作,A a b判断a与b是否在同一帮派,D a b将a与b加入不同帮派

分析:非常好的并查集题目,用两倍的并查集分别来表示两个帮派,当进行D操作时,将a与b+n,a+n与b分别加同一帮派,A操作时进行判断,same(a,b)表示a与b在同一帮派,same(a,b+n)表示a与b在不同帮派,否则不能确定

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <vector>
 6 #include <algorithm>
 7 #include <set>
 8 #include <map>
 9 #include <bitset>
10 #include <cmath>
11 #include <queue>
12 #include <stack>
13 using namespace std;
14 const int maxn=100010;
15 int par[maxn*2],rankl[maxn*2];
16 void init(int n){
17     for(int i=0;i<n;i++){
18         par[i]=i;
19         rankl[i]=0;
20     }
21 }
22 
23 int findl(int x){
24     if(par[x]==x)  return x;
25     else{
26         return par[x]=findl(par[x]);
27     }
28 }
29 
30 void unite(int x,int y){
31     x=findl(x);
32     y=findl(y);
33     if(x==y)  return;
34     if(rankl[x]<rankl[y]){
35         par[x]=y;
36     }else{
37         par[y]=x;
38         if(rankl[x]==rankl[y])  rankl[x]++;
39     }
40 }
41 
42 bool same(int x,int y ){
43     return findl(x)==findl(y);
44 }
45 
46 int main()
47 {
48     int t;
49     cin>>t;
50     while(t--)
51     {
52         int n,m;
53         cin>>n>>m;
54         init(n*2);
55         getchar();
56         char s;
57         int a,b;
58         while(m--){
59             scanf("%c%d%d%*c",&s,&a,&b);
60             if(s==A){
61                 if(same(a,b)){
62                     cout<<"In the same gang."<<endl;
63                 }
64                 else if(same(a,b+n)){
65                     cout<<"In different gangs."<<endl;
66                 }else{
67                     cout<<"Not sure yet."<<endl;
68                 }
69             }else{
70                 unite(a,b+n);
71                 unite(a+n,b);
72             }
73         }
74     }
75     
76     return 0;
77 }
View Code

 

5月14日

标签:

原文地址:http://www.cnblogs.com/wolf940509/p/5494150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!