uva 10720(贪心)

来源:互联网 发布:校园二手网站 c 源码 编辑:程序博客网 时间:2024/06/05 13:34

题意:给出n个结点和每个结点的度数,问是否可能构成简单图,两个结点连线不能超过1条。

题解:遍历把度数匹配减掉,刚开始忘记每次把度数多优先选择,wa,然后每次排个序,让度数多的结点先减度数,ac。

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 10005;int degree[N], n, flag, i, j;int cmp(int a, int b) {return a > b;}int main() {while (scanf("%d", &n) && n) {flag = 0;for (i = 0; i < n; i++) {scanf("%d", &degree[i]);if (degree[i] >= n)flag = 1;}if (flag) {printf("Not possible\n");continue;}for (i = 0; i < n; i++) {sort(degree, degree + n, cmp);for (j = i + 1; j <= i + degree[i]; j++) {degree[j]--;if (degree[j] < 0)break;}if (j != i + degree[i] + 1)break;}if (i != n)printf("Not possible\n");elseprintf("Possible\n");}return 0;}


0 0