zoukankan      html  css  js  c++  java
  • 欧拉路径Hrbust1351

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1351

    这道题先利用并查集的知识点,把输入的数据连结起来,形成一个树,然后再逐个结点判断。如果所有的结点都能相连,那么这是一个连通的路径,否则直接跳出,输出。否则记录结点的度的个数,逐个检查。

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     4 #include<iostream>
     5 using namespace std;
     6 int fa[20005],a[105];
     7 int fin(int x)//查找两个结点是否出自同一个父亲节点
     8 {
     9     return fa[x]==x?fa[x]:fa[x]=fin(fa[x]);
    10 }
    11 int unin(int x,int y)//将有关联两个节点连结在一起
    12 {
    13     return fa[fin(y)]=fin(x);
    14 }
    15 int main()
    16 {
    17 
    18     int m,n;
    19     while(cin>>m>>n){
    20     memset(a,0,sizeof(a));
    21     memset(fa,0,sizeof(fa));
    22     for(int i=1;i<=m;i++){
    23         fa[i]=i;/初始化父亲节点
    24     }
    25     int x;int y;
    26     for(int i=1;i<=n;i++){
    27         cin>>x>>y;
    28         if(fin(x)!=fin(y)){//如果两个节点还没有出自同一个结点,那么
    29             unin(x,y);//吧这两个节点连结在一起
    30         }
    31         a[x]++;//同时记录结点的度数
    32         a[y]++;//同时记录结点的度数
    33     }
    34     int sum1=0;
    35     for(int i=1;i<=m;i++){
    36         if(a[i]%2!=0){
    37             sum1++;
    38         }
    39         
    40     }
    41     int flag=0;
    42     for(int i=1;i<=m;i++){
    43         if(fin(i)!=fin(1)){//如果结点并不是相连续的,那么
    44             flag=1;//记录flag的值
    45             break;//跳出
    46         }
    47     }
    48      if(flag==1)
    49         {
    50             printf("Graph is not connected!
    ");
    51             continue;
    52         }
    53         if(sum1==2)
    54         {
    55             printf("have Euler path
    ");
    56         }
    57         else if(sum1==0)
    58         {
    59             printf("have Euler Circuit
    ");
    60         }
    61         else
    62         {
    63             printf("have no Euler path
    ");
    64         }
    65 
    66     }
    67     return 0;
    68 }
    69  
    70 
    71 
    72  
    73  
    74  
    View Code
    你若盛开,清风自来...
  • 相关阅读:
    C#24种设计模式汇总
    传智播客C++视频学习笔记(5)
    传智播客C++视频学习笔记(3)
    传智播客C++视频学习笔记(1)
    Learning hard 网络编程
    Learning hard 学习笔记
    男人和女人 访问者模式
    其实你不懂老板的心 解释器模式
    项目多也别傻做 享元模式
    git常用命令
  • 原文地址:https://www.cnblogs.com/shangjindexiaoqingnian/p/5816110.html
Copyright © 2011-2022 走看看