二分图(挑战程序设计竞赛)

来源:互联网 发布:淘宝网伊利奶粉 编辑:程序博客网 时间:2024/06/06 06:47
#include<stdio.h>#include<iostream>#include<vector>#include<string.h>#include<algorithm>using namespace std;#define maxn 10001int V,E;//顶点数,边数vector <int> G[maxn];int color[maxn];bool dfs(int v,int c){    color[v]=c;    for(int i=0;i<G[v].size();i++)    {        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(){    for(int i=0;i<V;i++)        {            if(color[i]==0)            if(!dfs(i,1)){            printf("No\n");            return;            }        }        printf("Yes\n");}int main(){    int s,t;    memset(color,0,sizeof(color));    scanf("%d%d",&V,&E);    for(int i=0;i<E;i++){        scanf("%d%d",&s,&t);//无向图需要无向图从s到t和t到s都要存进去        G[s].push_back(t);        G[t].push_back(s);    }    solve();    for(int i=0;i<V;i++)          printf("%d ",color[i]);   }

1 0
原创粉丝点击