zoukankan      html  css  js  c++  java
  • NYOJ 42 一笔画问题

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int father[1005];
     5 int degree[1005];
     6 int find(int x)
     7 {
     8     if(x!=father[x])
     9         father[x]=find(father[x]);
    10     return father[x];
    11 }
    12 void merge(int x,int y)
    13 {
    14     x=find(x);
    15     y=find(y);
    16     if(x!=y)
    17         father[x]=y;
    18 }
    19 int main()
    20 {
    21     int i,a,b,n,p,q,cnt,dnt; 
    22     scanf("%d",&n);
    23     while(n--){
    24         cnt=dnt=0;
    25         memset(degree,0,sizeof(degree));
    26         scanf("%d%d",&p,&q);
    27         for(i=1;i<=p;i++)
    28             father[i]=i;
    29         while(q--){
    30             scanf("%d%d",&a,&b);
    31             if(a==b) continue;
    32             degree[a]++;
    33             degree[b]++;
    34             merge(a,b);
    35         }
    36         for(i=1;i<=p;i++){
    37             if(father[i]==i)
    38                 cnt++;
    39             if(degree[i]&1)
    40                 dnt++;
    41         }
    42         if(cnt==1&&(dnt==0||dnt==2))
    43             puts("Yes");
    44         else
    45             puts("No");
    46     }
    47     //system("pause");
    48     return 0;
    49 }

    解题思路: 

    在18世纪的哥尼斯堡城里有七座桥。当时 有很多人想要一次走遍七座桥,并且每座桥只能经过一次。这就是世界上很有名的哥尼斯堡七桥问题。你能一次走遍这七座桥,而又不重复吗?(自己动手画画吧)

    答案

      16.一笔画问题

      这个问题,实际上是一笔画问题。

      一笔画就是一笔可以画成一个图。

      判断一笔画的方法:

      ①是连通的。一个图,如果图上任意二点总有线段连接着,就称为连通的。不是连通的就不能一笔画出。

      ②奇点个数是0或者是2。图上线段的端点可以分成二类,奇点和偶数。一个点,以它为端点的线段数是奇数就称为奇点,线段数是偶数就称为偶点。

      一个图是否是一笔画就看奇点的个数,奇点个数是 0 或者 2,就是一笔画,否则就不是一笔画。

      哥尼斯桥问题,就是一笔画问题。但因A、B、C、D四个点都是奇点即奇点的个数是4,而不是0或2,所以不是一笔画,也就不能一次走遍,而又不重复。

    今天又复习了一遍并查集的概念,参见:http://www.nocow.cn/index.php/%E5%B9%B6%E6%9F%A5%E9%9B%86

  • 相关阅读:
    python list介绍
    python unittest模块
    python 贪婪算法
    python 动态规划:背包问题
    汇编语言 基础知识(王爽)
    python 迪克斯特拉(Dijkstra)
    python 广度优先查找 (最短路径)
    Python 快速排序
    python 分而治之 找零数量 最小组合
    移动端的头部标签和 meta
  • 原文地址:https://www.cnblogs.com/shihuajie/p/2969207.html
Copyright © 2011-2022 走看看