HDU-1829-A Bug's Life

来源:互联网 发布:主机监控软件 编辑:程序博客网 时间:2024/06/07 05:14

ACM模版

描述

描述

题解

种类并查集,相邻的两个关系如果是同性,则冲突(也就是gay),否则,正常。

代码

#include <stdio.h>const int MAXN = 2010;int pre[MAXN];int rank[MAXN];  //  1:同 0:异bool flag;      //  false:无冲突,true:有冲突void init(int n){    flag = false;    for (int i = 0; i <= n; i++)    {        pre[i] = i;        rank[i] = 0;    }}int find(int x){    if (x == pre[x])    {        return pre[x];    }    int temp = find(pre[x]);    rank[x] = (rank[pre[x]] + rank[x]) & 1;    pre[x] = temp;    return pre[x];}void join(int x, int y){    int fx = find(x);    int fy = find(y);    if (fx != fy)    {        pre[fx] = fy;        rank[fx] = (rank[x] + rank[y] + 1) & 1;    }    else    {        if (rank[x] == rank[y])        {            flag = true;        }    }    return ;}int main(){    int T;    scanf("%d", &T);    int n, m;    int bug, bug_;    for (int i = 1; T--; i++)    {        scanf("%d%d", &n, &m);        init(n);        for (int j = 0; j < m; j++)        {            scanf("%d%d", &bug, &bug_);            if (flag)            {                continue;            }            join(bug, bug_);        }        if (flag)        {            printf("Scenario #%d:\nSuspicious bugs found!\n\n", i);        }        else        {            printf("Scenario #%d:\nNo suspicious bugs found!\n\n", i);        }    }    return 0;}
0 0
原创粉丝点击