zoukankan      html  css  js  c++  java
  • (简单) POJ 2492 A Bug's Life,二分染色。

    Description

    Background 
    Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs of the opposite gender. In his experiment, individual bugs and their interactions were easy to identify, because numbers were printed on their backs. 
    Problem 
    Given a list of bug interactions, decide whether the experiment supports his assumption of two genders with no homosexual bugs or if it contains some bug interactions that falsify it.

      判断奇环,二分染色bfs,并查集都可做。

    代码如下:

    // ━━━━━━神兽出没━━━━━━
    //      ┏┓       ┏┓
    //     ┏┛┻━━━━━━━┛┻┓
    //     ┃           ┃
    //     ┃     ━     ┃
    //     ████━████   ┃
    //     ┃           ┃
    //     ┃    ┻      ┃
    //     ┃           ┃
    //     ┗━┓       ┏━┛
    //       ┃       ┃
    //       ┃       ┃
    //       ┃       ┗━━━┓
    //       ┃           ┣┓
    //       ┃           ┏┛
    //       ┗┓┓┏━━━━━┳┓┏┛
    //        ┃┫┫     ┃┫┫
    //        ┗┻┛     ┗┻┛
    //
    // ━━━━━━感觉萌萌哒━━━━━━
    
    // Author        : WhyWhy
    // Created Time  : 2015年07月17日 星期五 20时49分42秒
    // File Name     : 2492.cpp
    
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    
    using namespace std;
    
    const int MaxN=2010;
    
    int map1[MaxN][MaxN];
    int flag=0;
    int vis[MaxN];
    int N;
    int que[MaxN],first,last;
    
    bool bfs(int u)
    {
        int v;
    
        first=last=0;
        que[last++]=u;
        vis[u]=1;
    
        while(last-first)
        {
            u=que[first++];
    
            for(v=1;v<=N;++v)
                if(map1[u][v]==flag && v!=u)
                {
                    if(vis[v]==vis[u])
                        return 1;
    
                    if(!vis[v])
                    {
                        vis[v]=-vis[u];
                        que[last++]=v;
                    }
                }
        }
    
        return 0;
    }
    
    bool getans()
    {
        memset(vis,0,sizeof(vis));
        first=last=0;
    
        for(int i=1;i<=N;++i)
            if(!vis[i])
                if(bfs(i))
                    return 1;
    
        return 0;
    }
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
    
        int T,cas=1;
        int Q;
        int a,b;
    
        scanf("%d",&T);
    
        while(T--)
        {
            scanf("%d %d",&N,&Q);
            ++flag;
    
            while(Q--)
            {
                scanf("%d %d",&a,&b);
                map1[a][b]=map1[b][a]=flag;
            }
    
            printf("Scenario #%d:
    ",cas++);
    
            if(getans())
                puts("Suspicious bugs found!
    ");
            else
                puts("No suspicious bugs found!
    ");
        }
        
        return 0;
    }
    View Code
  • 相关阅读:
    数据库性能优化
    AutoDetectChangesEnabled及AddRange解决EF插入的性能问题
    实体框架 5 性能注意事项
    使用JS传递数组型数据回服务器
    Code First配合Entity Framework Power Tools Beta 4使用
    HighChart 体验之旅 (后台传递JSON参数和数据的方法)
    System.Transactions事务超时设置
    ASP.NET站点部署相关
    js 字符串转化成数字
    发布.net 4.0的站点到IIS7.5下时无法访问
  • 原文地址:https://www.cnblogs.com/whywhy/p/4655688.html
Copyright © 2011-2022 走看看