HDU 1878 欧拉回路

http://acm.hdu.edu.cn/showproblem.php?pid=1878

一个无向图存在欧拉回路,当且仅当该图所有顶点度数都是偶数且该图是连通图。

连通图用并查集判断

View Code
#include <iostream>

using namespace std ;

int hash[1002] ;

int idx[1002] ;

int find(int x)

{

    return idx[x]==x?x:idx[x]=find(idx[x]) ;

}

int main()

{

    int n,m ;

    while(scanf("%d",&n),n)

    {

        memset(hash,0,sizeof(hash)) ;

        scanf("%d",&m) ;

        int a,b ;

        for(int i=1;i<=n;i++)

            idx[i]=i ;

        while(m--)

        {

            scanf("%d%d",&a,&b) ;

            int p,q ;

            p=find(a) ;

            q=find(b) ;

            if(p!=q)

            {

                if(p>q)

                    idx[p]=q ;

                else

                    idx[q]=p ;

            }

            hash[a]++,hash[b]++ ;

        }

        int flag=0,zz ;

        zz=idx[1] ;

        for(int i=1;i<=n;i++)

        {

        

            if(hash[i]&1)

            {

                flag=1 ;

                break ;

            }

            if(zz!=idx[i])

            {

                flag=1 ;

                break ;

            }

        }

        if(flag)

            puts("0") ;

        else

            puts("1") ;

    }

    return 0 ;

} 

 

你可能感兴趣的:(HDU)