HDU 1829 A Bug's Life

来源:互联网 发布:万网域名指向花生壳 编辑:程序博客网 时间:2024/05/16 02:51

看别人都用并查集。。我用的是bfs

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <map>#include <queue>#include <ctime>#include <set>#define ll long long#define MK make_pair#define PB push_back#define SZ(x) ((int)(x).size())#define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++ )using namespace std;int n,m,st[2013];vector<int> vec[2013];bool bfs(int i){    queue<int> q;    q.push(i);    while(!q.empty()){        int u=q.front();q.pop();        FOR(v,vec[u])            if(!st[*v]){                q.push(*v);                st[*v]=-st[u];            }            else if(st[*v]==st[u]) return false;    }    return true;}int main(){#ifndef ONLINE_JUDGE    freopen("a.in","r",stdin);    freopen("a.out","w",stdout);#endif    int t,ca=0;    cin>>t;    while(t--){        cout<<"Scenario #"<<++ca<<':'<<endl;        memset(st,0,sizeof(st));        cin>>n>>m;        for(int i=0;i<m;i++){            int a,b;scanf("%d%d",&a,&b);            vec[a].PB(b);            vec[b].PB(a);        }        bool ok=true;        for(int i=1;i<=n&&ok;i++)            if(!st[i]){                st[i]=1;                if(!bfs(i)) ok=false;            }        if(ok) puts("No suspicious bugs found!");        else puts("Suspicious bugs found!");        puts("");        for(int i=1;i<=n;i++) vec[i].clear();    }    return 0;}


 

原创粉丝点击