POJ 2492 A Bug's Life

题目链接:http://poj.org/problem?id=2492


题意这竟然是一道同性恋的题 OMG , 给你N条BUG,然后给出M条,a和b是异性,问有无同性恋


详细题解种类并查集 与父节点同性则为0,异性为1


#include<cstdio>
#define N 2200
int F[N];
int sex[N];
int find(int x)
{
    if(F[x] != x)
    {
        int fa_x = find(F[x]);
        sex[x] = (sex[x] + sex[F[x]]) % 2;
        F[x] = fa_x;
    }
    return F[x];
}

int main ()
{
    int T, t = 1;
    scanf("%d", &T);
    while(T--)
    {
        int n,m;
        scanf("%d %d", &n, &m);
        for(int i = 1; i <= n; i++)
        {
            F[i] = i;
            sex[i] = 0;
        }

        int flag = 0;
        for(int i = 1; i <= m; i++)
        {
            int a, b;
            scanf("%d %d", &a, &b);
            int fa = find(a);
            int fb = find(b);
            if(fa == fb)
            {
                int temp = (1+sex[a])%2;
                if(temp != sex[b])
                    flag = 1;
            }
            else{
                sex[fb] = (1+sex[a]+2-sex[b])%2;
                F[fb] = fa;
            }


        }

        printf("Scenario #%d:\n", t++);
        if(flag == 1)
            puts("Suspicious bugs found!\n");
        else
            puts("No suspicious bugs found!\n");
    }
    return 0;
}



你可能感兴趣的:(POJ 2492 A Bug's Life)