andre_joy

导航

poj 2492

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

题意:判断是否有同性恋。。。

mark:解题报告主流思想是并查集,我用的bfs。

   wa了很多次,都是一些不细心。而且这题居然每组数据后面都有一个空格。。。。

代码:

#include <stdio.h>
#include <queue>
#include <string.h>

using namespace std;

bool a[2010][2010];
int b[2010];
int f[2010];
int m;

int pd()
{
    int fr,la,i,j,p;
    queue<int> q;
    for(i = 1; i <= m; i++)
    {
        if(b[i] == -1)
        {
            b[i] = 0;
            q.push(i);
            f[i] = 1;
            while(!q.empty())
            {
                p = q.front();
                q.pop();
                for(j = 1; j <= m; j++)
                    if(a[p][j])
                    {
                        if(b[j] == b[p]) return 0;
                        b[j] = 1-b[p];
                        if(!f[j]) {f[j] = 1; q.push(j);}
                    }
            }
        }
    }
    return 1;
}

int main()
{
    int t,n,p,q;
    int i,j,k;
    scanf("%d", &t);
    for(k = 0; k < t; k++)
    {
        scanf("%d%d", &m, &n);
        memset(a, 0, sizeof(a));
        memset(b, -1, sizeof(b));
        memset(f, 0, sizeof(f));
        for(i = 0; i < n; i++)
        {
            scanf("%d%d", &p, &q);
            a[p][q] = 1;
            a[q][p] = 1;
        }
        printf("Scenario #%d:\n", k+1);
        puts(pd() ? "No suspicious bugs found!\n" : "Suspicious bugs found!\n");
    }
    return 0;
}

posted on 2012-07-23 12:28  andre_joy  阅读(222)  评论(0编辑  收藏  举报