Havel-Hakimi定理 hdu2454 / poj1695 Havel-Hakimi定理
Havel-Hakimi定理
当年一度热门出如今ACM赛场上的算法。
算法定义:
Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的。
2。首先介绍一下度序列:若把图 G 全部顶点的度数排成一个序列 S,则称 S 为图 G 的度序列。
3。一个非负整数组成的有限序列假设是某个无向图的序列,则称该序列是可图的。
4。判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】開始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。
5,举例:序列S:7,7,4,3,3,3,2,1 删除序列S的首项 7 。对其后的7项每项减1。得到:6,3,2,2,2,1,0,继续删除序列的首项6,对其后的6项每项减1,得到:2,1,1,1,0。-1,到这一步出现了负数,因此该序列是不可图的。
有2种不合理的情况:
(1)某次对剩下序列排序后。最大的度数(设为d1)超过了剩下的顶点数;
(2)对最大度数后面的d1个数各减1后,出现了负数。
两道模板题:HDU2454(纯裸题) / poj 1695(略微改一下就好了)
模板:
struct Node{
int id,num;
bool operator < (const Node& rhs) const {
if(num == rhs.num)
return id < rhs.id;
return num > rhs.num;
}
}node[MAXN];
int n;
int mp[MAXN][MAXN];
void solve() {
int sum = 0;
for(int i = 0;i < n;++i)
sum += node[i].num;
if(sum & 1) {
puts("NO");
return;
}
int flag = 0;
memset(mp,0,sizeof(mp));
for(int i = 0;i < n;++i) {
sort(node,node + n);
if(0 == node[0].num) {
flag = 1;
break;
}
for(int j = 0;j < node[0].num;++j) {
if(--node[j+1].num < 0) {
flag = 2;
break;
}
mp[node[0].id][node[j+1].id] = mp[node[j+1].id][node[0].id] = 1;
}
node[0].num = 0;
if(flag == 2) break;
}
if(flag == 1) {
puts("YES");
for(int i = 0;i < n;++i)
for(int j = 0;j < n;++j)
printf("%d%c",mp[i][j],j==n-1?'\n':' ');
} else {
puts("NO");
}
}
Havel-Hakimi定理 hdu2454 / poj1695 Havel-Hakimi定理的更多相关文章
- 旋度定理(Curl Theorem)和散度定理(Divergence theorem)
原文链接 首先说说格林公式(Green's theorem).对于一段封闭曲线,若其围城的区域D为单连通区域(内部任意曲线围城的区域都属于院区域),则有如下公式: 其中其中L为D的边界,取正方向.如果 ...
- Mittag-Leffler定理,Weierstrass因子分解定理和插值定理
Mittag-Leffler定理 设$D\subset\mathbb C$为区域,而$\{a_{n}\}$为$D$中互不相同且无极限点的点列,那么对于任意给定的一列自然数$\{k_{n}\}$, ...
- 【分享】IT产业中的三大定理(一) —— 摩尔定理(Moore's Law)
科技行业流传着很多关于比尔·盖茨的故事,其中一个是他和通用汽车公司老板之间的对话.盖茨说,如果汽车工业能够像计算机领域一样发展,那么今天,买一辆汽车只需要 25 美元,一升汽油能跑四百公里.通用汽车老 ...
- 【Havel 定理】Degree Sequence of Graph G
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2454 [别人博客粘贴过来的] 博客地址:https://www.cnblogs.com/debug ...
- 【转】Polya定理
转自:http://endlesscount.blog.163.com/blog/static/82119787201221324524202/ Polya定理 首先记Sn为有前n个正整数组成的集合, ...
- CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)
Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...
- POJ 1006 中国剩余定理
#include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...
- Gershgorin圆盘定理
众所周知,对一个$n$阶方阵求取特征值需要解一个一元$n$次方程,当$n$很大时,这是很难实现的.但是,在有些涉及矩阵的实际问题中,我们并不需要知道矩阵特征值的准确值,而只需要知道其大概范围就行了,例 ...
- CAP定理与RDBMS的ACID
一.分布式领域CAP理论 CAP定理指在设计分布式系统时,一致性(Consistent).可用性(Availability).可靠性(分区容忍性Partition Tolerance)三个属性不可能同 ...
随机推荐
- POJ 1426 Find The Multiple (DFS / BFS)
题目链接:id=1426">Find The Multiple 解析:直接从前往后搜.设当前数为k用long long保存,则下一个数不是k*10就是k*10+1 AC代码: /* D ...
- D. Dreamoon and Sets(Codeforces Round #272)
D. Dreamoon and Sets time limit per test 1 second memory limit per test 256 megabytes input standard ...
- python 时间合集 一
**以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨**#### python中4种时间表示形式:1.格式化时间字符串 2.时间戳 3.时间元祖 4.时间对象- string_time ...
- VB 宏+mysql解决EXCEL表格实现自动化处理
1.表格模板自动建立源码 Sub opp()Dim myPath$, myFile$, AK As WorkbookApplication.ScreenUpdating = FalsemyPath = ...
- linux下安装sar
本文转自(https://blog.csdn.net/qq_31391261/article/details/79419740) OS:centos6.5 操作步骤: 1)输入sar命令:sar -- ...
- vue.js代码开发最常见的功能集合
1:点击新增按钮跳出新页面 <span class="inquire" @click="addNew">新增</span> 在方法中,添 ...
- [Python] Object spread operator in Python
In JS, we have object spread opreator: const x = { a: '1', b: '2' } const y = { c: '3', d: '4' } con ...
- js 数组操作大集合
js数组的操作 用 js有非常久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目.用到数组的地方非常多.自以为js高手的自己竟然无从下手 ...
- 【例题 7-5 UVA - 129】Krypton Factor
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次枚举增加一个字符; 然后看看新生成的字符的后缀里面有没有出现连续子串就好,前面已经确认过的没必要重复确认 (枚举长度为偶数的一个 ...
- 【Codeforces Round #446 (Div. 2) A】Greed
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 贪心选容量大的瓶子就好 [代码] #include <bits/stdc++.h> #define int long l ...