POJ 1659 可图序列(Havel)
2009-12-10 17:30
183 查看
http://hi.baidu.com/kanovy/blog/item/a10890941d66f44cd1135e0d.html
Havel算法的思想简单的说如下:
(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
出现负数,直接退出!
Havel算法的思想简单的说如下:
(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 <iostream> #include <cstdlib> #include <cstring> #include <cstdio> using namespace std; int t,n; struct node { int id; int val; }du[11]; int g[11][11]; int cmp(const void * a,const void *b) { node * n1=(node *)a; node * n2 = (node *)b; return n2->val - n1->val; } int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); memset(du,0,sizeof(du)); memset(g,0,sizeof(g)); int i=0; int j =0; for(i=0;i<n;i++) { scanf("%d",&du[i].val); du[i].id=i; } bool flag=false; while(true) { qsort(du,n,sizeof(node),cmp); int te = du[0].val; du[0].val=0; for(j=1;j<=te;j++) { g[du[0].id][du[j].id]=1; g[du[j].id][du[0].id]=1; du[j].val--; if(du[j].val<0) { flag=true; break; } } if(flag == true) break; for(j=0;j<n;j++) { if(du[j].val==0) continue; else break; } if(j==n) { break; } } if(flag == true) { printf("NO/n"); } else { printf("YES/n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d ",g[i][j]); printf("/n"); } } printf("/n"); } }
相关文章推荐
- poj 1659 Havel-Hakimi定理(图解序列能否成图)
- POJ 1659-Frogs' Neighborhood(Havel-Hakimi定理-度序列构图)
- Havel-Hakimi 度序列判断无向图是否可图 Poj 1659 Frogs' Neighborhood
- [poj 1659 ]Frogs\' Neighborhood(Havel-Hakimi定理(判断一个序列是否可图))
- poj 1659 Frogs' Neighborhood (Havel-Hakimi定理,判断序列是否可图)
- Havel-Hakimi定理(度序列可图性的判定)&POJ 1659 Frogs' Neighborhood
- poj1659 - Frogs' Neighborhood (利用Havel-Hakimi定理判断一个序列是否是可图的)
- POJ 1659 Frogs' Neighborhood havel度序列定理的应用
- POJ 1659 Frogs' Neighborhood (贪心+Havel-Hakimi定理)
- POJ 1659 Frogs' Neighborhood (Havel-Hakimi定理 + 贪心)
- POJ 1659 判断是否可图(Havel-Hakimi定理)
- poj 1659 判断是否能构成图Havel-Hakimi定理
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
- poj-1659 Frogs' Neighborhood(判断是否可图,Havel_Hakimi定理)
- poj 1659 havel-hakimi 定理
- Poj 1659 Frogs' Neighborhood ( Havel-Hakimi定理)
- poj1659 Havel-hakimi定理
- poj-1659-Frogs' Neighborhood-图论-Havel-Hakimi定理-java
- POJ 1659 Frogs' Neighborhood(可图性判定—Havel-Hakimi定理)【超详解】
- poj1659 havel-hakimi定理的应用