zoukankan      html  css  js  c++  java
  • 九度OnlineJudge之1027:欧拉回路

    题目描述:
        欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
    输入:                       
        测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
    输出:                       
        每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
    样例输入:                       
    3 3
    1 2
    1 3
    2 3
    3 2
    1 2
    2 3
    0
    //欧拉回路(无向图)经典解法:并查集+奇偶判断 (有向图也很简单,只要将Degree标志量拆分成inDegree和outDegree加之稍微变化一点的奇偶判断即可)
    样例输出:                       
    1
    0
    #include <iostream>
    
    #define MAX 1001
    
    using namespace std;
    
    int Tree[MAX];
    
    int Degree[MAX];
    
    int findRoot(int x)
    {
      if(Tree[x]==-1)  return x;
      else
      {
      int tmp = findRoot(Tree[x]);  
      Tree[x] = tmp;
      return tmp;    
      }      
    }
    
    int main()
    {
        
        int N;
        int M;
        while(cin>>N,N!=0)
        {
            cin>>M;
            for(int i=1;i<=N;++i)
               {
                    Tree[i]=-1;          
                    Degree[i]=0;
               }      
          int a,b;
          while(M--)
          {
               cin>>a>>b;         
               ++Degree[a];
               ++Degree[b]; 
               int x =  findRoot(a);
               int y =  findRoot(b);  
               if(x!=y)
               {
                   Tree[x] = y;                
               }               
          }
          int ans = 0;
          int flag = 1;
          for(int i=0;i<=N;++i)
          {
              if(Tree[i]==-1)  ans++;
              if(Degree[i]%2==1) flag=0;         
          }
          if(ans!=1)  flag=0;
          cout<<flag<<endl;                    
        }
       // system("PAUSE");
        return 0;
    }
    

  • 相关阅读:
    20155322 2016-2017-2 《Java程序设计》第7周学习总结
    高级sed编程
    正则表达式
    实验十二:kvm环境下qemu-kvm创建虚拟机之间的网络配置
    实验十一:了解qemu-kvm的显示选项参数
    实验十:在kvm下创建winxp虚拟机
    实验九:第二个虚拟机的创建(标准选项)
    实验八:kvm环境搭建并创建第一台cirrOS虚拟机
    sed和gawk
    在脚本中添加颜色
  • 原文地址:https://www.cnblogs.com/ainima/p/6331216.html
Copyright © 2011-2022 走看看