• POJ 2492 A Bug's Life 并查集


    题目大意:有n个虫子,m个数据,每行数据有a,b两个虫子,意味着a,b可以交配。为有没有同性恋……

    题目思路:并查集,每次加入的a,b如果father[a]和father[b]相同,就通过判断relation[a]和relation[b]是否相等来确定是否存在同性恋,不同则进行更新。

    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    #include<queue>
    #define INF 0x3f3f3f3f
    #define MAX 2200
    
    using namespace std;
    
    int father[MAX],relation[MAX],ok;//relation[i]记录i与根节点的性别是否相同
    
    int Find(int x)
    {
        int k;
    
        if(x==father[x])
            return x;
        k=Find(father[x]);
        relation[x]=relation[x]^relation[father[x]];
        return father[x]=k;
    }
    int main()
    {
        int i,j,n,m,T,a,b,cnt=1;
    
        scanf("%d",&T);
    
        while(T--)
        {
            ok=1;
    
            scanf("%d%d",&n,&m);
    
            memset(relation,0,sizeof(relation));
    
            for(i=0; i<MAX; i++)
                father[i]=i;
    
            for(i=1; i<=m; i++)
            {
                scanf("%d%d",&a,&b);
    
                if(!ok)
                    continue;
                int x=Find(a);
                int y=Find(b);
    
                if(x==y)
                {
                    ok=relation[a]^relation[b];//若a,b与根节点的性别都相同或都不相同,则a,b为同性恋
                }
    
                else
                {
                    father[x]=y;
                    int k=(relation[a]^relation[b]);
                    if(k)
                        relation[x]=0;
                    else
                        relation[x]=1;
                }
            }
    
            printf("Scenario #%d:
    ",cnt++);
    
            if(!ok)
                printf("Suspicious bugs found!
    
    ");
            else
                printf("No suspicious bugs found!
    
    ");
    
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [leetcode-495-Teemo Attacking]
    [leetcode-413-Arithmetic Slices]
    document对象操作:浏览器页面文件
    搭建wamp环境,数据库基础知识
    jenkins配置邮箱服务器(126邮箱)
    Linux命令之文件与用户权限
    并发与同步、信号量与管程、生产者消费者问题
    TypeScript设计模式之职责链、状态
    了解HTML列表
    CSS画出的图
  • 原文地址:https://www.cnblogs.com/alan-W/p/5804883.html
Copyright © 2020-2023  润新知