HDU 1829 A Bug's Life

来源:互联网 发布:软件安装管理器2016 编辑:程序博客网 时间:2024/05/01 22:53

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829


用二分图做的,,,,,,刚学图,,以为这道题有向图跟无向图都没影响,,,贡献了N次WA。。调试了好久才找到原因,,

贡献一组测试数据:

89 11
42 2
43 5
23 54
12 55
76 3
33 89
89 32
54 4
34 32
88 67
56 54

NO...

#include <iostream>#include<vector>#include<cstdio>#include<cstring>#define MAX_V 2005using namespace std;vector <int> g[MAX_V];int color[MAX_V];           //二分图染色bool dfs(int v,int c){    int i;    color[v]=c;         //把节点v染成c色    for(i=0;i<g[v].size();i++)      //g[v].size()为当前节点的边数    {        if(color[g[v][i]]==c)            return false;        if(color[g[v][i]]==0 && !dfs( g[v][i],-c) )            return false;    }    return true;}void solve(int v){    int i;    for(i=1; i<=v; i++)        if(color[i]==0&&!g[i].empty())        {            if(!dfs(i,1))            {                printf("Suspicious bugs found!\n");                return;            }        }    printf("No suspicious bugs found!\n");}int main(){    int T;    int i;    int s,t;    int v,e;    int Case;    scanf("%d",&T);    for(Case=1; Case<=T; Case++)    {        memset(color,0,sizeof(color));        for(i=0;i<MAX_V;i++)            g[i].clear();        scanf("%d%d",&v,&e);        for(i=0; i<e; i++)        {            scanf("%d%d",&s,&t);            //无向图            g[s].push_back(t);            g[t].push_back(s);        }        printf("Scenario #%d:\n", Case);        solve(v);        printf("\n");    }    return 0;}



0 0
原创粉丝点击