Havel-Hakimi定理*
实例演示:
判断序列S:=6,5,4,3,3,3,2,0 是否可图。
证:a. 删除首元素6,将除去第一个元素后面的6(后面最大值个)个元素减一,得到:S1 = 4,3,2,2,2,1,0
b.删除首元素4,将除去第一个元素后面的4个元素减一,得到:S2 = 2,1,1,1,1,0
c,删除首元素2,将除去第一个元素后面的2个元素减一,得到:S3 = 0,0,1,1,0
d.重新排序:S4 = 1,1,0,0,0
e.删除首元素1,将除去第一个元素后面的1个元素减一,得到:S3 = 0,0,0,0
若最后得到一个非负序列即为可成图
模版
int havel(int a[])
{
for(int i=0;i<n;i++)
{
sort(a,a+n,cmp);
if(a[0]==0) break;
for(int j=1;j<=a[0]&&j<n;j++)
{
a[j]--;
if(a[j]<0)
{
return 1;
break;
}
}
a[0]=0;
}
return 0;//可谓图
}
<