hdu 1878 欧拉回路

来源:互联网 发布:php时间月份差 编辑:程序博客网 时间:2024/04/28 23:06

思路:要形成欧拉回路就要图是连通的并且每个点度数为偶数,用并查集判断整张图连通性,记录下度判断下就好了。

#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define PI acos(-1.0)#define INF 0x3f3f3f3ftypedef long long LL;typedef unsigned long long ULL;const int maxn=1010;int du[maxn],F[maxn];int n,m,a,b;int Find(int x){    return F[x]==x?x:F[x]=Find(F[x]);}void Union(int a,int b){    int t1=Find(a);    int t2=Find(b);    if(t1!=t2)F[t2]=t1;}int main(){    while(~scanf("%d",&n)){        if(!n)break;        scanf("%d",&m);        memset(du,0,sizeof(du));        for(int i=1;i<=n;i++)F[i]=i;        while(m--){            scanf("%d%d",&a,&b);            du[a]++;            du[b]++;            Union(a,b);        }        int t=Find(1);        int ok=1;        for(int i=2;i<=n;i++){            if(Find(i)!=t){                ok=0;break;            }        }        for(int i=1;i<=n;i++){            if(du[i]&1){                ok=0;break;            }        }        printf("%d\n",ok);    }    return 0;}
0 0
原创粉丝点击