zoukankan      html  css  js  c++  java
  • UVa 10596 Moring Walk【欧拉回路】

    题意:给出n个点,m条路,问能否走完m条路。

    自己做的时候= =三下两下用并查集做了交,WA了一发-后来又WA了好几发--(而且也是判断了连通性的啊)

    搜了题解= = 发现是这样的:

    因为只要求走完所有的路,即为只需要走完已经给出的路,而并没有要求所走得路上含有所有的点,

    比如说 给出的路有这些

    0 1

    1 2

    2 3

    3 0

    4 4

    那么构成的路即为,绕着图中的蓝色线走一圈,即为走完了所有的路,

    而4是一个孤立点,也并没有构成路,所以不需要管它

    代码中的 if(d[i]!=0)是判断这个点是否是孤立点的

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 int d[10010],pre[10010];
     7 int find(int root){ return root == pre[root] ? root : pre[root] = find(pre[root]); }
     8 void unionroot(int x,int y)
     9 {
    10     int root1=find(x);
    11     int root2=find(y);
    12     if(root1!=root2) pre[root1]=root2;
    13 }
    14 
    15 int main()
    16 {
    17     int m,n,u,v,i;
    18     while(scanf("%d %d",&n,&m)!=EOF)
    19     {
    20             int flag=1;
    21         memset(d,0,sizeof(d));
    22         memset(pre,0,sizeof(pre));
    23         for(i=0;i<=10010;i++)
    24         pre[i]=i;
    25         for(i=1;i<=m;i++)
    26         {
    27             scanf("%d %d",&u,&v);
    28             d[u]++;
    29             d[v]++;
    30             unionroot(u,v); 
    31         }
    32         
    33         int root=find(0);
    34         
    35         if(m==0||n==0) flag=0;//n=0的时候是不能构成回路的,m=0的时候 也不能 
    36         
    37         for(i=0;i<n;i++){     
    38                 if(d[i]!=0){ //判断这个点是否是孤立的点 
    39                     if(find(i)!=root||d[i]%2!=0){ //判断这个点是否在同一个联通块上,以及判断这个店的度数是否为偶数 
    40                     flag=0;
    41                     break;
    42                   }
    43                 } 
    44         }
    45         
    46         if(flag)
    47         printf("Possible
    ");
    48         else
    49         printf("Not Possible
    ");     
    50     }
    51     return 0;
    52 }
    View Code

    她只是想走完所有的路,她不想走4

    go---go---

  • 相关阅读:
    MySQL基础(二)
    MySQL练习题
    前端基础之css
    前端基础之初识HTML
    Ubuntu14.04 + Text-Detection-with-FRCN(CPU)
    简单HOG+SVM mnist手写数字分类
    汽车检测SIFT+BOW+SVM
    4. Neural Network
    2. Linear Model
    OpenCV2计算机编程手册(二)基于类的图像处理
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4342887.html
Copyright © 2011-2022 走看看