hdu 2454 Degree Sequence of Graph G (判断简单图)

来源:互联网 发布:环信java服务端demo 编辑:程序博客网 时间:2024/06/07 00:17

///已知各点的度,判断是否为一个简单图#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int a[1010];bool cmp(int x,int y){    return x>y;}int main(){    int t,n,i,j;    scanf("%d",&t);    while(t--)    {        int flag=1;        scanf("%d",&n);        for (i=0; i<n; i++)            scanf("%d",&a[i]);        sort(a,a+n,cmp);        while (a[0] && a[n-1]>=0)        {            int i = 1;            while (a[0]--)            {                --a[i++];            }            ++a[0];            sort(a,a+n,cmp);        }        if(a[n-1]<0)            printf("no\n");        else            printf("yes\n");    }    return 0;}

1,Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的。

2,首先介绍一下度序列:若把图 G 所有顶点的度数排成一个序列 S,则称 S 为图 G 的度序列。

3,一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的。

4,判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】开始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。

5,举例:序列S:7,7,4,3,3,3,2,1  删除序列S的首项 7 ,对其后的7项每项减1,得到:6,3,2,2,2,1,0,继续删除序列的首项6,对其后的6项每项减1,得到:2,1,1,1,0,-1,到这一步出现了负数,因此该序列是不可图的。

0 0
原创粉丝点击