博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可图的度序列判断与构造
阅读量:6881 次
发布时间:2019-06-27

本文共 1666 字,大约阅读时间需要 5 分钟。

EG定理 

还有一篇博客讲的havel定理

另有havel定理

havel定理是基于贪心构造的

每次顶点按度大小从大到小排序,去除度最大的点Vi,依次和度较大的那些顶点Vj链接,同时减去Vj的度。连接完之后就不再考虑Vi了,剩下的点再次排序去找度最大的去连接。
如何判断无解呢,若某次选出的Vi的度比剩下的顶点还多,则无解;若某次的度Vj减成了负数,则无解
此定理证明啥的 还是略了 本人太弱,并不懂,时间复杂度是O(n^2 logn),可以通过优先队列或者计数排序优化成O(n^2) 然而还是比EG定理慢
NEU 1429
EG定理代码
O(nlogn)
#include
#include
#include
#include
using namespace std;const int N = 1e4 + 10;int deg[N],sumd[N],sum[N];bool cmp(int x,int y){
return x>y;}bool check(int n){ memset(sumd,0,sizeof(sumd)); memset(sum,0,sizeof(sum)); for(int i = 1; i <= n; i++) sumd[i] = sumd[i-1] + deg[i]; if(sumd[n]&1) return false; for(int r = 1; r
i*(i-1) + sum[i]) return false; } return true;}int main(){ int n; while(~scanf("%d",&n)) { for(int i = 1; i<=n; i++) scanf("%d",°[i]); sort(deg+1,deg+n+1,cmp); if(check(n)) puts("YES"); else puts("NO"); } return 0;}

havel定理代码

#include
#include
using namespace std;const int N = 1e4 + 10;int deg[N];bool cmp(int x,int y){ return x > y;}bool check(int n){ for(int i = 0 ; i < n ; i++) { sort(deg+i,deg+n,cmp); if(i + deg[i]>=n) return false; for(int j = i + 1; j<=i+deg[i]; j++) { if(--deg[j] < 0 ) return false; } } if(deg[n-1]!=0) return false; return true;}int main(){ int n; while(~scanf("%d",&n)) { for(int i = 0;i
havel定理相对于EG定理 时间复杂度是没有优势的
但是其对于EG定理,具有明显的构造性
给出两道题目
POJ_1659: .
UVa_10720_Graph_construction.
 

 

转载于:https://www.cnblogs.com/jiachinzhao/p/4934601.html

你可能感兴趣的文章
剑指offer:树的子结构
查看>>
为什么我总是这么忧伤
查看>>
Hyper-V的备份与还原(PowerShell)
查看>>
MySQL MyISAM和InNodb备份与恢复技巧
查看>>
SplitContainer 控件扩展之收缩面板
查看>>
AD 重置密码完整脚本
查看>>
安卓的屏幕分辨率的设置
查看>>
Linux cpu性能问题排查
查看>>
linux下的端口扫描工具nmap
查看>>
AX负载均衡配置经验漫谈(1) - 健康检查
查看>>
Linux awk命令详解
查看>>
11.25 配置防盗链11.26 访问控制Directory11.27 访问控制FilesMatch
查看>>
Flask-Sqlalchemy设置时间默认值
查看>>
Android Log日志
查看>>
平面向量加法(10)
查看>>
在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问
查看>>
浅谈装饰模式
查看>>
11.PHP中的比较运算符
查看>>
Dispatcher与UI线程交互
查看>>
自动登陆抽屉(1)
查看>>