【题目链接】

http://acm.hdu.edu.cn/showproblem.php?pid=2454

【别人博客粘贴过来的】

博客地址:https://www.cnblogs.com/debugcool/archive/2011/04/23/HDOJ2454.html


一句话,顶点的度序列 Havel 定理~

定义:给出一个无向图的顶点度序列 {dn},要求判断能否构造出一个简单无向图。

分析:

贪心的方法是每次把顶点按度大小从大到小排序,取出度最大的点Vi,依次和度较大的那些顶点Vj连接,同时减去Vj的度。连接完之后就不再考虑Vi了,剩下的点再次排序然后找度最大的去连接……这样就可以构造出一个可行解。
    判断无解有两个地方,若某次选出的Vi的度比剩下的顶点还多,则无解;若某次Vj的度减成了负数,则无解。
至于什么是Havel定理,上面这个构造过程就是了~

定理的简单证明如下:
    (<=)若d'可简单图化,我们只需把原图中的最大度点和d'中度最大的d1个点连边即可,易得此图必为简单图。
    (=>)若d可简单图化,设得到的简单图为G。分两种情况考虑:
        (a)若G中存在边,则把这些边除去得简单图G',于是d'可简单图化为G'
        (b)若存在点Vi,Vj使得i=dj,必存在k使得(Vi, Vk)在G中但(Vj,Vk)不在G中。这时我们可以令GG=G-{(Vi,Vk),(V1,Vj)}+{(Vk,Vj),(V1,Vi)}。GG的度序列仍为d,我们又回到了情况(a)。


【自己的理解】

真的非常感谢上面这位大哥提供的博客解析,不然我都自闭一下午了。

其实如果单纯想的话我只是想到匹配罢了,根本想不到居然可以有这样的定理。

这个Havel定理,其实是一个判断依据。

1、按照度数从大到小排序,然后依次建边。

2、建边的过程就是以该点为起点,其余都是它的目标点,然后大家都度减一

注意!!!!一定是前k大的。

最后就是判断这个度数组,是否为全零。

下面就是代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 using namespace std ;
 5
 6 const int N = 1e3 + 10 ;
 7 int a[N] ;
 8
 9 int main()
10 {
11     int T , n ;
12     for ( cin >> T ; T ; T-- ){
13         int tot = 0 , edge = 0 ;
14         cin >> n ;
15         //for( int i=1;i<=n;i++ ) cin >> a[i] ;
16
17         for( int i=1;i<=n;i++ ){
18             cin >> a[i] ;
19             tot += a[i] ;
20         }
21
22
23         // 判断  入度和出度
24         if( tot & 1 ) {
25             printf("no\n");
26             continue;
27         }
28         // 排序,从大到小
29         sort ( a+1, a+1+n , [](int u,int v){return u>v;} );
30
31         bool flag = true ;
32         for(int i = 1 ; flag && i <= n ; i++ ){
33             for(int j=i+1 ; a[i] && j<=n ;j++ ){
34                 if( a[j] == 0 ) continue;
35                 a[i] -- ;
36                 a[j] -- ;
37             }
38             //注意每次操作完都需要取前K大的.
39             sort( a+i+1 , a+1+n ,[](int u,int v){return u>v;} ) ;
40         }
41         for(int i=1;i<=n;i++){
42             //cout << a[i] << " ";
43             if( a[i] != 0 ){
44                 flag = false ;
45             }
46         }
47         if( flag ) puts("yes");
48         else puts("no");
49     }
50     return 0;
51 }

Degree Sequence of Graph G

转载于:https://www.cnblogs.com/Osea/p/11312732.html

【Havel 定理】Degree Sequence of Graph G相关推荐

  1. hdu 2454 Degree Sequence of Graph G

    点击打开链接 Degree Sequence of Graph G Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  2. Degree Sequence of Graph G【模拟】

    Degree Sequence of Graph G 时间限制: 1 Sec 内存限制: 128 MB 提交: 362 解决: 92 [提交] [状态] [命题人:admin] 题目描述 Wang H ...

  3. Degree Sequence of Graph G

    问题描述 王海洋是一个坚强乐观的中国青年.虽然出生和成长在北方内陆城市哈尔滨,但他对无边无际的海洋有着深厚的爱和向往.毕业后,他来到一个沿海城市,在一家海运公司找到了一份工作.在那里,他在一艘货轮上担 ...

  4. hdu 2454 Degree Sequence of Graph G(可简单图化判定)

    传送门 •Havel-Hakimi定理: 给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化. 进一步,若图为简单图,则称此序列可简单图 ...

  5. POJ 1659 Frogs‘ Neighborhood (Havel 定理)

    Havel 定理: 序列的可图:给出一个 由非负整数组成的序列,如果是某个无向图的度序列,则称该序列是可图的. 而 Havel 定理,就是判断序列的可图的方法.先按度数从大到小排序, 每次处理完度数一 ...

  6. 图的基本概念、握手定理、Havel定理

    图 图论被广泛应用在计算机科学.运筹学.信息论.控制论.网络理论.博弈论.化学.生物学.物理学.社会科学.语言学等领域: 图论的应用方向1:以理论计算机科学和信息科学为研究背景,探索图论在计算机科学和 ...

  7. 图的度序列:Havel定理

    给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化.进一步,若图为简单图,则称此序列可简单图化. 可图化的判定比较简单:d1+d2+.. ...

  8. POJ1659 Frogs' Neighborhood(Havel定理)

    题目: Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 9932   Accepted ...

  9. CF411H 被遗忘的树 Havel定理 || 网络流

    全场只有3个人A的题扔过来当今天的T4.Orz DWX大爷考试时A掉这道题 网络流做法是题解做法,上CF就能看到 但是我们还有其他的方法! 我们有Havel定理的某条推论,既然这是一个树,那么某个子联 ...

最新文章

  1. 同一套C#.NET程序,给同一个人卖了3次的反思
  2. 新基建火了,开源云计算渠道能做什么?
  3. 如何用好 Chrome devtools
  4. Linux中出现 -bash: unzip: command not found
  5. jQuery EasyUI快速入门01
  6. 如何测试WiFi路由器小包性能
  7. 论文复现:土卫六(Titan)大气参数计算
  8. linux服务器共享网络设置方法,Windows和linux网络共享 配置网上邻居
  9. 【FINAL】NOI
  10. PCL点云处理之计算三维向量夹角(六十五)
  11. 如何设置QQ和微信截图快捷键
  12. Unity3D教学 开发简单版第一人称射击游戏 可以多人联机(附源码)
  13. sql 字段内容局部替换, sql删除或替换字段内内容
  14. bili弹幕姬_b站弹幕姬|b站弹幕姬下载_v1.0.1.126官方版_9号软件下载
  15. html 下拉框搜索,下拉框搜索功能的实现
  16. 2021年十大数据分析和商业智能趋势
  17. subprocess模块详解
  18. ARM V8 base instruction -- WFI
  19. 关于隔离卡的安装系统出现无法转换
  20. Virgo软件的介绍

热门文章

  1. 高性能 JavaScriptの五 -- 快响应用户界面
  2. 用故事解析setTimeout和setInterval(内含js单线程和任务队列)
  3. 作为学生借助 CODECHINA 这样学习 Git 知识
  4. Windows程序意外挂掉,但显存依然被占用
  5. 商汤科技发布新一代SensePass工业级可视人脸识别门禁全新升级
  6. 海南安全员A证怎么考多选题库
  7. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串
  8. IAR中map文件全解析
  9. iOS 苹果开发者账号--个人账号、公司账号、企业账号的区别
  10. 名帖370 赵孟頫《真草千字文》