Jzoj4625 树

如果∑d≠2n-2说明错了

否则,我们先构造出这棵树的直径,若一个di>2则我们将d-2个节点与其相连,所以answer=n-1-∑(max(2,d[i])-2)

#include<stdio.h>
inline int max(int a,int b){ return a>b?a:b; }
int main(){
	int n,d[20],ds=0,m;
	scanf("%d",&n);
	for(int i=0;i<n;++i) scanf("%d",d+i),ds+=d[i];
	if(ds!=(n-1)<<1) return 0&puts("-1"); m=n-1;
	for(int i=0;i<n;++i) m-=max(2,d[i])-2;
	printf("%d\n",m);
}

posted @ 2017-10-11 21:24  扩展的灰(Extended_Ash)  阅读(91)  评论(0编辑  收藏  举报