• [ ACM ] Hdu 1878 欧拉回路


    欧拉通路:图中所有的节点的度都是偶数。

    所以只需要记一下每个点出现的次数即可。

    有一种像下面的特例(n==6):
      1       4
     /     /
    2---3   5---6
    虽然每个节点的度都是2,但分成了两部分。

    所以,还要用并查集判断一下。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int MAXN=1000+5;
     5 const int INF=100000000;
     6 
     7 int node[MAXN];
     8 int parent[MAXN];
     9 
    10 int main(){
    11     int n,m;
    12     while(scanf("%d",&n) && n!=0){
    13         scanf("%d",&m);
    14         for(int i=0;i<=n;i++){
    15             node[i]=0;
    16             parent[i]=i;
    17         }
    18         int a,b;
    19         while(m--){
    20             scanf("%d %d",&a,&b);
    21             node[a]++;
    22             node[b]++;
    23             parent[b]=parent[a];
    24         }
    25         int ans=0,ok=true;
    26         for(int i=1;i<=n;i++){
    27             if(node[i]%2!=0)ans++;
    28         }
    29         if(ans==0){
    30             int t=parent[1];
    31             for(int i=1;i<=n;i++){
    32                 if(parent[i]!=t)
    33                     ok=false;
    34             }
    35         }
    36         else 
    37             ok=false;
    38 
    39         if(ok)printf("1
    ");
    40         else printf("0
    ");
    41     }
    42 }
  • 相关阅读:
    实验一 GIT 代码版本管理
    实验五、单元测试
    实验四 代码审查
    结对编程 第二阶段
    结对编程第一阶段
    结对编程(一)
    实验1 GIT代码版本管理
    实验五 单元测试
    实验四 代码评审
    实验三 UML建模工具的安装与使用
  • 原文地址:https://www.cnblogs.com/bruce27/p/4420029.html
Copyright © 2020-2023  润新知