UVA10720- Graph Construction

来源:互联网 发布:上海市行知实验中学 编辑:程序博客网 时间:2024/06/08 16:32

题意:给出一些点的度数,问使用所有点是否能形成图


思路:使用了Havel-Hakimi定理。

详细的定理解释借鉴学长的一篇博客 Havel-Hakimi定理


#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 10005;int n, arr[MAXN];int cmp(int a, int b) {    return a > b;}int Havel_Hakimi() {    for (int i = 0; i < n; i++) {        sort(arr + i, arr + n, cmp);         if (arr[i] > n - 1 - i)            return 0;        for (int j = i + 1; j <= i + arr[i]; j++) {            arr[j]--;             if (arr[j] < 0)                return 0;        }     }    return 1;}int main() {    while (scanf("%d", &n) && n) {        for (int i = 0; i < n; i++)             scanf("%d", &arr[i]);        if (Havel_Hakimi())             printf("Possible\n");        else            printf("Not possible\n");     }    return 0;}


0 0
原创粉丝点击