• 一笔画问题---欧拉定理


    欧拉定理   如果一个网络是连通的并且奇顶点的个数等于0或2,那么它可以一笔画出;否则它不可以一笔画出。

    判断一笔画的方法:

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

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

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

    所以这个问题完全可以转化策略为:

               第一步: 首先我们不管它三七二十几,先进行连通性的判断。

               第二步:

                          (1)如果是连通的,我们来判断此图的度的奇点的个数是0或者是2 ,如果是,则说明这个是欧拉图,即可以一笔画出,反之则不能一笔画出

                          (2)如果是非连通的,这说明这个图很定不能一笔画出。

     1 #include <cstdio>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 int mp[1010][1010];
     6 int n,p,q,a,b;
     7 short vis[1010],c[1010];
     8 
     9 void dfs(int cur)
    10 {
    11     vis[cur]=1;
    12     for(int i=1;i<=p;i++)
    13     {
    14         if(mp[cur][i]&&!vis[i])
    15         {
    16             dfs(i);
    17         }
    18     }
    19 }
    20         
    21 int main()
    22 {
    23     scanf("%d",&n);
    24     while(n--)
    25     {
    26         memset(mp,0,sizeof(mp));
    27         memset(vis,0,sizeof(vis));
    28         memset(c,0,sizeof(c));
    29         scanf("%d%d",&p,&q);
    30         for(int i=0;i<q;i++)
    31         {
    32             scanf("%d%d",&a,&b);
    33             mp[a][b]=mp[b][a]=1;
    34         }
    35         int cn=0;
    36         for(int i=1;i<=p;i++)
    37         {
    38             for(int j=1;j<=p;j++)
    39                 c[i]+=mp[i][j];
    40             if(c[i]%2==1)
    41                 cn++;
    42         }
    43         dfs(1);
    44         int ok=1;
    45         for(int i=1;i<=p;i++)
    46             if(!vis[i])
    47         {
    48             ok=0;
    49             break;
    50         }
    51         if(ok&&(cn==0||cn==2))
    52         {
    53             printf("Yes
    ");
    54         }
    55         else
    56             printf("No
    ");
    57     }
    58     return 0;
    59 }
    60         
    View Code
  • 相关阅读:
    P1613 跑路
    数据挖掘-聚类分析(Python实现K-Means算法)
    使用scikit-learn 估计器分类
    数据挖掘-集成学习
    数据挖掘-关联分析 Apriori算法和FP-growth 算法
    scikit-learn 中常用的评估模型
    数据挖掘---支持向量机(SVM)
    数据挖掘-KNN-K最近邻算法
    数据挖掘-决策树
    数据挖掘-逻辑Logistic回归
  • 原文地址:https://www.cnblogs.com/WDKER/p/5465924.html
Copyright © 2020-2023  润新知