poj 1703

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>

#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) (x<<1)
#define r(x) (x<<1|1)
#define ms(a,b) memset(a,b,sizeof(a))

using namespace std;

int fat[222222],t,n,m,a,b,c,d,len;
char cmd;

void init(){for(int i = 0;i<=2*n;i++)fat[i] = i;}
int findf(int x){return fat[x] == x?x:fat[x] = findf(fat[x]);}
void uni(int x,int y){ fat[findf(x)] = findf(y);}
bool same(int x,int y){return findf(x) == findf(y);}

int main(){
    scanf("%d",&t);
    while (t--){
        len = 0;
        cin>>n>>m;
        scanf("%d%d",&n,&m);
        init();
        for(int i = 0;i<m;i++){
            scanf("%c%d%d",&cmd,&a,&b);
            getchar();
            a--;
            b--;
            switch (cmd){
                case 'D':
                    uni(a,b+n);
                    uni(a+n,b);
                    break;
                case 'A':
                    if(same(a,b+n)||same(a+n,b))
                        printf("In different gangs.\n");
                    else if(same(a,b)||same(a+n,b+n))
                        printf("In the same gang.\n");
                    else
                        printf("Not sure yet.\n");
                    break;
                default:
                    break;
            }

        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值