码迷,mamicode.com
首页 > 其他好文 > 详细

Havel-Hakimi定理 POJ1659

时间:2016-07-15 06:23:21      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

对于图的所有顶点,计算出每个顶点的度,度序列。给定一个序列判断序列是否可图。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int map[15][15];
struct vertext {
	int d;
	int num;
}x[15];
bool cmp(vertext a,vertext b) {
	return b.d<a.d;
}
int main() {
	int t,n;
	scanf("%d",&t);
	while(t--) {
		scanf("%d",&n);
		memset(map,0,sizeof map);
		for(int i=0;i<n;i++) {
			scanf("%d",&x[i].d);
			x[i].num=i;
		}
		sort(x,x+n,cmp);
		int flag=0;
		for(int i=0;i<n;i++) {
			sort(x+i,x+n,cmp);
			if(x[i].d>n-i-1) {
				flag=1;break;
			}
			for(int j=i+1;j<=i+x[i].d;j++) {
				map[x[i].num][x[j].num]=map[x[j].num][x[i].num]=1;
				x[j].d--;
				if(x[j].d<0) {
					flag=1;break;
				}
			}
			if(flag==1) break;
			x[i].d=0;
		}
		if(x[n-1].d!=0) flag=1;
		if(flag==0) {
			printf("YES\n");
			for(int i=0;i<n;i++) {
				for(int j=0;j<n;j++) {
					printf("%d",map[i][j]);
					if(j!=n-1) printf(" ");
				}
				printf("\n");
			}	
		}
		else printf("NO\n");
		if(t!=0) printf("\n");
	}
	return 0;
} 

 

Havel-Hakimi定理 POJ1659

标签:

原文地址:http://www.cnblogs.com/LinesYao/p/5672157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!