POJ2492---A Bug's Life(做完食物链,再秒这个)

和食物链那个是一种类型的,直接代码。

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int s[4100];

int Find(int x)
{
    if (s[x] < 0)return x;
    else return s[x] = Find(s[x]);//路径压缩
}

void unite(int x, int y)
{
    int rootx = Find(x);
    int rooty = Find(y);
    if(rootx==rooty)return;
    if (s[rootx] < s[rooty])
    {
    s[rootx] += s[rooty];
    s[rooty] = rootx;
    }
    else
    {
    s[rooty] += s[rootx];
    s[rootx] = rooty;
    }

}

bool same(int x, int y)
{
    return Find(x) == Find(y);
}
int main()
{
    int N; cin >> N; 
    for(int i=1;i<=N;i++)
    {
        int flag = 1;
        int bugs, inter;
        cin >> bugs >> inter;//就是不改,还不用scanf。
        fill(s + 1, s + 1 + 2*bugs, -1);
        while (inter--)
        {
            int x, y;
            cin >> x >> y;
            if (same(x, y))
                flag = 0;
            else
            {
                unite(x, y + bugs);
                unite(x + bugs, y);
            }

        }
        printf("Scenario #%d:\n", i);
        if (!flag) puts("Suspicious bugs found!");
        else puts("No suspicious bugs found!");
        puts("");
    }
    system("pause");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值