zoukankan      html  css  js  c++  java
  • Hdu 1878 欧拉回路

    【题意】给定n个点,m条无向边,问有无欧拉回路

    【分析】两个条件 [1]连通:用并查集或DFS [2]每一个点度为偶数:用枚举或DFS

    【实现】

    这道题我用了邻接矩阵。这道题会有x->x的情况,这个不算在度内,所以要有:

    for (int i=1;i<=n;i++) p[i][i]=0;

    坑了我3次WA...
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    
    using namespace std;
    
    const int N=1000;
    
    int n,m,p[N][N];
    int v[N];
    
    int DFS(int u)
    {
    	int c=0,d=1;
    	v[u]++;
    	for (int i=1;i<=n;i++)
    		if (p[u][i])
    		{
    			c++;
    			if (!v[i]) 
    			{
    				d&=DFS(i);
    				if (!d) break;
    			}
    		}
    	return d&&c%2==0;
    }
    
    int main(void)
    {	
    	for (;scanf("%d%d",&n,&m)==2;)
    	{
    		memset(p,0,sizeof p);
    		memset(v,0,sizeof v);
    		
    		int x,y;
    		for (;m--;)
    		{
    			scanf("%d%d",&x,&y);
    			p[x][y]=p[y][x]=1;
    		}
    		for (int i=1;i<=n;i++) p[i][i]=0;
    		
    		int d=DFS(1);
    		for (int i=1;i<=n;i++)
    		{
    			if (!d) break;
    			if (!v[i]) d=0;
    		}
    		printf("%d
    ",d);
    	}
    	
    	return 0;
    }


    【小结】对于图,注意x->x的数据。为了避免出现错误,所以将p[i][i]再赋值为0
  • 相关阅读:
    js发送请求
    GIS小知识
    oracle常见错误
    java异常Exception
    java获取文件路径
    Runnable和Thread的区别
    Hadoop shell命令
    Runtime和Process
    Linux下查看tomcat控制台输出信息
    ajax小知识
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6911347.html
Copyright © 2011-2022 走看看