zoukankan      html  css  js  c++  java
  • hdu 1878 欧拉回路+并查集

    欧拉回路: 通过图中每条边且只通过一次,并且经过每一顶点的回路。

    无向图欧拉回路的判定:图连通;图中所有节点度均为偶数

    有向图欧拉回路的判定:图连通;所有节点入度等于出度

    这道题属于无向图,首先用并查集判断图的联通性,各点的度数用一个数组保存下来。

    如果一个点的根结点和其他点的根结点不同,则图不联通,有点度数为奇数也不满足欧拉回路,则输出0,否则输出1。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cmath>
     4 #include<vector>
     5 
     6 using namespace std;
     7 
     8 int n,m;
     9 const int MAX_N=10005;
    10 int pre[MAX_N];
    11 int iin[MAX_N];
    12 
    13 void init()
    14 {
    15     for(int i = 0; i <= n; i++)
    16     {
    17         pre[i]=i;
    18         iin[i]=0;
    19     }
    20 }
    21 
    22 int find_root(int x)
    23 {
    24     int r = x;
    25     while(r!=pre[r])
    26         r = pre[r];
    27     
    28     int i = x,j;
    29     while(i!=r)
    30     {
    31         j = pre[i];
    32         pre[i] = r;
    33         i = j;
    34     }
    35     return r;
    36 }
    37 void join(int x,int y)
    38 {
    39     int xx = find_root(x);
    40     int yy = find_root(y);
    41     if(xx!=yy)
    42         pre[xx]=yy;
    43 }
    44 int main()
    45 {
    46     while(cin>>n>>m,n)
    47     {
    48         int a,b;
    49         init();
    50         for(int i = 1; i <= m; i++)
    51         {
    52             cin>>a>>b;
    53             iin[a]++;
    54             iin[b]++;
    55             join(a,b);
    56         }
    57         int temp = find_root(1);
    58         int flag = 1;
    59         for(int i = 1; i <= n; i++)
    60         {
    61             if(iin[i]%2 || find_root(i)!=temp)
    62             {
    63                 flag = 0;
    64                 break;
    65             }
    66         }
    67         if(flag)
    68             cout<<1<<endl;
    69         else
    70             cout<<0<<endl;
    71     }
    72     return 0;
    73 }
  • 相关阅读:
    英文综述如何写6
    英文综述如何写5
    英文综述如何写4
    英文综述如何写3
    英文综述如何写2
    英文综述如何写
    Python开发【第三篇】:Python基本数据类型
    Python开发【第二篇】:初识Python
    Python开发【第一篇】:目录
    第二十单元 计划任务crond服务
  • 原文地址:https://www.cnblogs.com/Xycdada/p/7373581.html
Copyright © 2011-2022 走看看