HDU 2454 Degree Sequence of Graph G——可简单图化&&Heavel定理

题意

给你一个度序列,问能否构成一个简单图。

分析

对于可图化,只要满足度数之和是偶数,即满足握手定理。

对于可简单图化,就是Heavel定理了。

Heavel定理:把度序列排成不增序,即 $deg[1] \geq deg[2] \geq ... \geq deg[V]$,则 $deg$ 可简单图化当且仅当 ${deg}' = \{deg[2]-1, deg[3]-1,...,deg[deg[1]+1]-1,...,deg[v] \}$ 可简单图化。

简单地说,把 $deg$ 从大到小排序后,找出度最大的点(设度为$d$),将它与度次大的 $d$ 的点连边,然后这个点就可以不管了。一直重复这个过程,直到用完所有的点。如果中间出现负度或剩下节点数小于当前节点的度数,则说明不可简单图化。(其实还是在运用握手定理)

#include<bits/stdc++.h>
using namespace std;

const int maxn = 1000 + 10;
int n, a[maxn];

int  main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        for(int i = 0;i < n;i++) scanf("%d", &a[i]);
        bool flag = false;
        for(int i = 0;i < n;i++)
        {
            sort(a+i, a+n, greater<int>());
            if(a[i] < 0 || a[i] > n-1-i)
            {
                flag = true;
                break;
            }
            for(int j = 1;j <= a[i];j++)  a[i+j]--;
        }
        if(flag)  printf("no\n");
        else  printf("yes\n");
    }
    return 0;
}

 

 

 

 

参考链接:

1. https://blog.csdn.net/Yasola/article/details/77862481

2. https://blog.csdn.net/shuangde800/article/details/7857246

posted @ 2019-08-11 10:27  Rogn  阅读(438)  评论(0编辑  收藏  举报