zoukankan      html  css  js  c++  java
  • HDU 1878 欧拉回路(判断欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878

    题目大意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?

    解题思路:判断无向图是否存在欧拉回路,判断每个点的度数是否为偶数+并查集确认连通性。

    代码:

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #define CLR(arr,val) memset(arr,val,sizeof(arr))
     5 using namespace std;
     6 const int N=1e3+5;
     7 
     8 int n,m;
     9 int root[N],indeg[N],outdeg[N];
    10 
    11 int find(int x){
    12     return root[x]==x?x:root[x]=find(root[x]);
    13 }
    14 
    15 int main(){
    16     while(scanf("%d",&n)!=EOF){
    17         if(n==0)
    18             break;        
    19         CLR(indeg,0);
    20         CLR(outdeg,0);
    21         for(int i=1;i<=n;i++)
    22             root[i]=i;
    23         scanf("%d",&m);
    24         int a,b,x,y;
    25         for(int i=1;i<=m;i++){
    26             scanf("%d%d",&a,&b);
    27             indeg[b]++;
    28             outdeg[a]++;
    29             x=find(a),y=find(b);
    30             if(x!=y)
    31                 root[x]=y;
    32         }
    33         bool flag=true;
    34         int cnt=0;
    35         for(int i=1;i<=n;i++){
    36             if(find(i)==i)
    37                 cnt++;
    38             if((indeg[i]+outdeg[i])%2!=0){
    39                 flag=false;
    40                 break;
    41             }
    42         }
    43         if(flag&&cnt==1)
    44             puts("1");
    45         else
    46             puts("0");
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    网络相关命令
    jmeter压力测试接口
    mysql+mycat+centos7
    centos7开放端口
    mysql主从库配置文件
    读写分离
    Memcached与Redis的区别和选择
    mybatis 学习
    redis 轻松入门
    swagger 框架使用
  • 原文地址:https://www.cnblogs.com/fu3638/p/7922931.html
Copyright © 2011-2022 走看看