POJ 1659 根据度序列构图
2012-04-18 19:37
169 查看
题目链接: http://poj.org/problem?id=1659
题目大意:
给定n个点(n<=10),及每个点的度数,问你是否可以构图满足这样的关系;如果可以输出任意一种构图方式(以邻接矩阵的形式输出,[i][j] == 1,表示点i和点j相连,否则为0表示不相连)。
分析:
贪心,开始我贪心错了,也就没怎么继续想,拿给lin神看,他直接就说是每次找个度数最大的来进行处理,然后我照他说的写还真就ac了。
另外,这个贪心是可以证明的,参见Havel定理,http://roba.yo2.cn/articles/%E5%9B%BE%E7%9A%84%E5%BA%A6%E5%BA%8F%E5%88%97-havel%E5%AE%9A%E7%90%86.html;
代码:
POJ 1659
题目大意:
给定n个点(n<=10),及每个点的度数,问你是否可以构图满足这样的关系;如果可以输出任意一种构图方式(以邻接矩阵的形式输出,[i][j] == 1,表示点i和点j相连,否则为0表示不相连)。
分析:
贪心,开始我贪心错了,也就没怎么继续想,拿给lin神看,他直接就说是每次找个度数最大的来进行处理,然后我照他说的写还真就ac了。
另外,这个贪心是可以证明的,参见Havel定理,http://roba.yo2.cn/articles/%E5%9B%BE%E7%9A%84%E5%BA%A6%E5%BA%8F%E5%88%97-havel%E5%AE%9A%E7%90%86.html;
代码:
POJ 1659
/*1659 Accepted 248K 0MS C++ 1536B 2012-04-18 19:25:23*/ #include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> #include <functional> #include <vector> using namespace std; #define mpair make_pair #define pii pair<int,int> #define MM(a,b) memset(a,b,sizeof(a)); typedef long long lld; typedef unsigned long long u64; template<class T> bool up_max(T& a,const T& b){return b>a? a=b,1 : 0;} template<class T> bool up_min(T& a,const T& b){return b<a? a=b,1 : 0;} #define maxn 20 int m[maxn][maxn]; pii a[maxn]; int main() { int T,n,i,j,t; cin>>T; while( T-- ){ cin>>n; for(i=1;i<=n;++i){ scanf("%d", &t); a[i]= pii( t, i ); } sort( a+1, a+1+n, greater< pii >() ); bool flag= 1; MM( m, 0 ); for(int k=1;k<=n;++k){ for(i=2; i<=n && a[1].first>0 ; ++i){ if( a[i].first > 0 ){ a[1].first--; a[i].first--; m[ a[1].second ][ a[i].second ]= 1; m[ a[i].second ][ a[1].second ]= 1; } } if( 0 != a[1].first ) flag= 0; else sort( a+1, a+1+n, greater< pii >() ); } if( !flag ) puts("NO"); else{ puts("YES"); for(i=1;i<=n;++i) for(j=1;j<=n;++j) printf("%d%c", m[i][j], j==n ? '\n' : ' ' ); } if( T ) puts(""); } }
相关文章推荐
- POJ 1659-Frogs' Neighborhood(Havel-Hakimi定理-度序列构图)
- POJ 1659 Frogs' Neighborhood(度序列构图)
- poj 1659 Frogs' Neighborhood (度序列)
- [poj 1659 ]Frogs\' Neighborhood(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(判断序列可图)
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
- Havel-Hakimi 度序列判断无向图是否可图 Poj 1659 Frogs' Neighborhood
- poj 1659 Frogs' Neighborhood (贪心 + 判断度数序列是否可图)
- poj 1659 Frogs' Neighborhood(判断序列可图)
- (度序列) poj 1659
- poj 1659 Frogs' Neighborhood (判定度序列的可图性) .
- POJ 1659 可图序列(Havel)
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
- (二叉搜索树10.1.2)POJ 1577 Falling Leaves(根据删除叶子节点的顺序输出计算一颗二叉树的前序遍历序列)
- poj 1659 Frogs' Neighborhood (贪心 + 判断度数序列是否可图)
- poj 1659 Frogs' Neighborhood (度序列)