zoukankan      html  css  js  c++  java
  • POJ 2492 并查集 A Bug's Life

    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>
    #include<limits.h>
    #include<math.h>
    #include<queue>
    #include<stack>
    #define max(a, b) a>b?a:b;
    #define min(a, b) a<b?a:b;
    using namespace std;
    const int N = 2010;
    int f[N], r[N];
    int Find(int x);
    int main()
    {
        int t, n, m, a, b;
        scanf("%d", &t);
        for(int ans=1; ans<=t; ans++)
        {
            int flag=0;
            scanf("%d%d", &n, &m);
            for(int i=0; i<=n; i++)
            {
                f[i]=i;
                r[i]=0;
            }
            for(int i=0; i<m; i++)
            {
                scanf("%d%d", &a, &b);
                int ra=Find(a);
                int rb=Find(b);
                if(ra==rb && r[a]==r[b])
                {
                    flag=1;
                }
                else if(ra!=rb)
                {
                    f[ra]=rb;
                    //r[ra]=(1-r[a]+r[b])%2;
                    r[ra] = r[a]^r[b]^1;
                }
            }
            printf("Scenario #%d:
    ", ans);
            if(flag==1)
            {
                printf("Suspicious bugs found!
    
    ");
            }
            else
            {
                printf("No suspicious bugs found!
    
    ");
            }
        }
        return 0;
    }
    int Find(int x)
    {
        int k=f[x];
        if(f[x]!=x)
        {
            f[x]=Find(f[x]);
            r[x]=(r[k]+r[x])%2;
        }
        return f[x];
    }
    

     

     
     
  • 相关阅读:
    CCNP-MPLS-标签交换
    Mac地址表、STP与RSTP原理
    mysql 初始数据库简单操作
    异步回调,事件,线程池与协程
    bug问题
    GIL 线程池
    异常处理
    奇怪的东西
    绑定方法
    初体验
  • 原文地址:https://www.cnblogs.com/wazqWAZQ1/p/4675209.html
Copyright © 2011-2022 走看看