HDU 1878 欧拉回路

解题思路:即为满足欧拉回路的两个条件就可以了  (1)是连通图(2)顶点度数为偶数

用并查集写的版本--

#include<iostream>  

#include<cstdio>  

#include<cstring>  

#include<algorithm>  

using namespace std;

int degree[10010],pre[10010];

int find(int root){ return root == pre[root] ? root : pre[root] = find(pre[root]); }

void unionroot(int x,int y)

{

    int root1=find(x);

    int root2=find(y);

    if(root1!=root2) pre[root1]=root2;

   

}

int main()

{

    int m,n,u,v,i;

    while(scanf("%d %d",&n,&m)!=EOF&&n)

    {

        	int flag=1;

        memset(degree,0,sizeof(degree));

        for(i=1;i<=10010;i++)

        pre[i]=i;

        for(i=1;i<=m;i++)

        {

            scanf("%d %d",&u,&v);

            degree[u]++;

            degree[v]++;

            unionroot(u,v); 

        }

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

        {

            if(degree[i]!=2)

            {

                flag=0;

                break;

            }

            if(find(i)!=find(n))

            {

                flag=0;

                break;

            }

        }

        if(flag)

        printf("1\n");

        else

        printf("0\n");     

    }

}

  用邻接矩阵储存图,用DFS遍历版本--

因为对于一个环,只需深度搜索一遍,则所有的点就已经被标记了,如果还有点没有被标记,那么就说明不构成环,再就是还是要满足顶点的度数为偶数

#include<iostream>  

#include<cstdio>  

#include<cstring>  

#include<algorithm>  

using namespace std;

int d[1005][1005],vis[1005],degree[1005];

void dfs(int u,int n)

{

	int i=1;

	vis[u]=1;

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

	{

		if(d[u][i]&&vis[i]==0)

		dfs(i,n);

	}	

}



int main()

{

	int n,m,i,j,ans,u,v,flag;

	while(scanf("%d %d",&n,&m)!=EOF&&n)

	{

		memset(d,0,sizeof(d));

		memset(vis,0,sizeof(vis));

		memset(degree,0,sizeof(degree));	

		flag=1;

		for(i=1;i<=m;i++)

		{

			scanf("%d %d",&u,&v);

			d[u][v]=d[v][u]=1;

			degree[u]++;

			degree[v]++;

		}

		dfs(1,n);

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

		{

			if(vis[i]==0)

			{

				flag=0;

				break;

			}

			if(degree[i]%2)

			{

				flag=0;

				break;

			}			

		}

		if(flag)

		printf("1\n");

		else

		printf("0\n");		

	}

}

  

你可能感兴趣的:(HDU)