zoukankan      html  css  js  c++  java
  • HDOJ 1878 欧拉回路 nyoj 42一笔画问题

     1 #include<cstdio>
     2 #include<cstring>
     3 int visited[1000];
     4 int find(int x)
     5 {
     6     if(visited[x]!=x) 
     7         return find(visited[x]);
     8     return x;
     9 }
    10 void make(int a,int b)
    11 {
    12     int f1=find(a);
    13     int f2=find(b);
    14     if(f1!=f2)
    15         visited[f2]=f1;
    16 }
    17 
    18 int main()
    19 {
    20     int a[1001];
    21     int n,m,i,j,x,y;
    22     while(scanf("%d",&n)!=EOF&&n)
    23     {
    24         scanf("%d",&m);
    25         int key=1;
    26         memset(a,0,sizeof(a));
    27         
    28         for(i=1;i<=n;i++)
    29         {
    30             visited[i]=i;
    31         }
    32         for(i=0;i<m;i++)
    33         {
    34             scanf("%d %d",&x,&y);
    35             make(x,y);
    36             a[x]++;
    37             a[y]++;
    38         }
    39         if(m<n-1)
    40             printf("0
    ");
    41         else
    42         {
    43             
    44             int root=find(1);
    45             for(i=1;i<=n;i++)
    46             {
    47                 if(a[i]%2!=0||find(i)!=root)
    48                 {
    49                     key=0;
    50                     break;
    51                 }
    52             }
    53             if(key)
    54                 printf("1
    ");
    55             else
    56                 printf("0
    ");
    57         }
    58     }
    59     return 0;
    60 }
    View Code

    1、每个顶点的度为偶数。

    2、每个顶点都相连。(m>=n-1)

     1 #include<stdio.h>
     2 #include<string.h>
     3 int pa[1005];
     4 int find(int x)
     5 {
     6     if(x!=pa[x])
     7       pa[x]=find(pa[x]);
     8     return pa[x];
     9 }
    10 void un(int x,int y)
    11 {
    12     x=find(x);
    13     y=find(y);
    14     if(x!=y)
    15     pa[x]=y;
    16 }
    17 int main()
    18 {
    19     int t,p,q,i,a,b,node[10001],f,sum,root;
    20     scanf("%d",&t);
    21     while(t--)
    22     {
    23         scanf("%d %d",&p,&q);
    24         for(i=1;i<=p;i++)
    25         {
    26         pa[i]=i;
    27         node[i]=0;
    28        }
    29         for(i=1;i<=q;i++)
    30         {
    31             scanf("%d %d",&a,&b);
    32             un(a,b);
    33             node[a]++;
    34             node[b]++;
    35             
    36         }
    37          sum=0;
    38          f=1;
    39          root=find(1);
    40         for(i=1;i<=p;i++)
    41         {            
    42             if(root!=find(i))
    43             {
    44                 f=0;
    45                 break;
    46             }
    47             if(node[i]%2!=0)
    48             sum++;
    49         }
    50         if(sum==2&&f==1||sum==0&&f==1)
    51         printf("Yes
    ");
    52         else
    53         printf("No
    ");
    54     }
    55     return 0;
    56 }
    View Code

    欧拉回路或欧拉通路。

  • 相关阅读:
    vue+elementUI表格排序事件
    移动端flex布局
    注册发送验证码提示信息
    jquery模拟生日日期下拉选择框
    标签模拟多选择框checkbox
    vue关于组件传值
    关于前端浏览器与服务器间的交互的对比与分析
    axios的基本使用
    Promise的基本使用
    Vue Cli2 文件路径别名
  • 原文地址:https://www.cnblogs.com/zeze/p/hdoj1878.html
Copyright © 2011-2022 走看看