poj1659(Harvel定理)
来源:互联网 发布:ubuntu kylin 编辑:程序博客网 时间:2024/05/16 17:17
题目链接:http://poj.org/problem?id=1659
Harvel算法简介:
(1)对序列从大到小进行排序。
(2)设最大的度数为 t ,把最大的度数置0,然后把最大度数后(不包括自己)的 t 个度数分别减1(意思就是把度数最大的点与后几个点进行连接)
(3)如果序列中出现了负数,证明无法构成。如果序列全部变为0,证明能构成,跳出循环。前两点不出现,就跳回第一步!
举例说明:
4 4 3 3 2 2
第二步后0 3 2 2 1 2
排完续后3 2 2 2 1 0
第二步后0 1 1 1 1 0
排完续后1 1 1 1 0 0
第二步后0 0 1 1 0 0
排完续后1 1 0 0 0 0
第二步后0 0 0 0 0 0
全为0,能构成图,跳出!
2 1 1 1
第二步后0 0 0 1
排完续后1 0 0 0
第二步后0 -1 0 0
出现负数,直接退出!
代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{int id;int val;}du[11];int map[11][11];int N,n;int cmp(const void *a,const void *b){return (*(struct node*)a).val < (*(struct node*)b).val ? 1 : -1;}int main(){int i,j;int flag,temp; scanf("%d",&N);while(N--){memset(du,0,sizeof(du));memset(map,0,sizeof(map));scanf("%d",&n); for(i=0;i<n;i++){scanf("%d",&du[i].val);du[i].id=i;}flag=1;while(1){ qsort(du,n,sizeof(du[0]),cmp); temp=du[0].val; du[0].val=0;for(j=1;j<=temp;j++){map[du[0].id][du[j].id]=1;map[du[j].id][du[0].id]=1;du[j].val--;if(du[j].val<0){flag=0;break;}} if(flag == 0)break;for(i=0;i<n;i++){if(du[i].val != 0)break;}if(i==n) break;}if(flag == 0) printf("NO\n");else {printf("YES\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d ",map[i][j]);printf("\n");}}printf("\n");}return 0;}
- poj1659(Harvel定理)
- poj1659 Havel-hakimi定理
- 0.8poj1659(Havel定理)
- poj1659(Havel-Hakimi定理)
- POJ1659 Frogs' Neighborhood(Havel定理)
- poj1659 Frogs' Neighborhood(Havel-Hakimi定理)
- poj1659 havel-hakimi定理的应用
- poj1659
- POJ1659
- poj1659 Frogs' Neighborhood (Havel-Hakimi定理可图化判定)
- POJ1659(Frogs' Neighborhood)(Havel-Hakimi定理运用)
- POJ1659 Frogs' Neighborhood(Havel-Hakimi 定理,判断序列可图)
- Havel-Hakimi定理(判断一个序列是否可图)->POJ1659
- poj1659 - Frogs' Neighborhood (利用Havel-Hakimi定理判断一个序列是否是可图的)
- poj1659 - Frogs' Neighborhood
- poj1659(贪心构造图)
- poj1659 Frogs' Neighborhood
- poj1659 Frogs' Neighborhood
- android 返回键 退出
- 如何判断点在线段左侧还是右侧还是线段之上
- 配置SQL Server服务帐户特权
- zigbee networks 学习笔记
- 使用sersync实时同步文件
- poj1659(Harvel定理)
- 原文地址:如何查看端口(3306)被那个程序占用?
- WebGoat 搞的纠结
- 技术贴:解码时AVC1和H264的区别
- linux网络编程之:DNS报文格式[转]
- javascirpt设置字符串类型注意
- 使用CMFCListCtrl控件时的排序方法
- 如何判断一个点是否在一个闭合区域内(无凹进的顶点)
- CSS3打造的10种创意动画菜单效果