A Bug's Life-----poj2492

http://poj.org/problem?id=2492

题意是问是否存在同性恋, 就是a喜欢b,b喜欢c,a又喜欢c,所以就有同性恋了;

A Bug's Life-----poj2492
#include<stdio.h>

#include<string.h>

#include<iostream>

#include<algorithm>

#define N 11000

using namespace std;



int f[N], r[N];



int Find(int x)

{

    int k=f[x];

    if(x!=f[x])

    {

        f[x]=Find(f[x]);

        r[x]=(r[k]+r[x])%2;

    }

    return f[x];

}



int main()

{

    int T, n, m, i, t=1, x, y, flag;

    scanf("%d", &T);

    while(T--)

    {

        flag = 0;

        printf("Scenario #%d:\n",t++);

        scanf("%d%d", &n, &m);

        for(i=0;i<n;i++)

        {

            f[i]=i;

            r[i]=0;

        }

        for(i=0;i<m;i++)

        {

            scanf("%d%d", &x, &y);

            int px=Find(x), py=Find(y);

            if(px != py)

            {

                f[px]=py;

                r[px]=(2-r[x]+r[y]+1)%2;

            }

            else if(px==py && (r[y]-r[x]+2)%2!=1)

            {

                if(flag==0)

                {

                    printf("Suspicious bugs found!\n\n");

                    flag=1;

                }

            }

        }

        if(flag==0)

            printf("No suspicious bugs found!\n\n");

    }

    return 0;

}
View Code

 

你可能感兴趣的:(life)