poj 2492 A Bug's Life

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

和poj 1703 一样不再多说

代码:

#include<iostream>

#include<cstdio>

#include<cstring>

#include<string>

#include<cmath>

#include<queue>

#include<algorithm>

#include<set>



using namespace std;



const int N=100010;



int f[N];

int same[N];

int findf(int x)

{

    if(f[x]!=x)

    {

        int temp=f[x];

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

        if(same[x]==same[temp])

        {

            same[x]=1;

        }else

        {

            same[x]=0;

        }

    }

    return f[x];

}

int main()

{

   int T;

   scanf("%d",&T);

   for(int w=1;w<=T;++w)

   {

       int n,m;

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

       for(int i=1;i<=n;++i)

       {

           f[i]=i;

           same[i]=1;

       }

       int ans=0;

       while(m--)

       {

           int x,y;

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

           if(ans)

           continue;

           int xf=findf(x);

           int yf=findf(y);

           if(xf==yf)

           {

               if(same[x]==same[y])

               {ans=1;continue;}

           }

           f[xf]=yf;

           if(same[x]==same[y])

           {

               same[xf]=0;

           }else

           {

               same[xf]=1;

           }

       }

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

       if(ans==0)

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

       else

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

   }

   return 0;

}

  

 

你可能感兴趣的:(life)