uva10720
2014-09-14 00:43
316 查看
题目的意思就是给你n个点,然后给出每个点的度数,问能不能构成图;
首先我们把点的度数从大到小排序,然后看看最大的度数是几,假如是k ,那如果剩下的没有k个点,就不能构成图,有的话度数大的接下k个点度数都减一,如果有度数变为负数了,那也不能构成。然后除掉第一个点,剩下的排序,重复上面的步骤,到最后一个点,如果度数是0那就对了,不是的话也不能构成图;
首先我们把点的度数从大到小排序,然后看看最大的度数是几,假如是k ,那如果剩下的没有k个点,就不能构成图,有的话度数大的接下k个点度数都减一,如果有度数变为负数了,那也不能构成。然后除掉第一个点,剩下的排序,重复上面的步骤,到最后一个点,如果度数是0那就对了,不是的话也不能构成图;
#include<iostream> #include<algorithm> using namespace std; const int N = 10000 + 5; int g ; int num; int cmp (int a ,int b) { return a > b; } bool yes(int pos) { for (int i = pos ; i < num; i++) { if (g[i] < 0) return false; } return true; } int main () { bool ok; while (cin >> num && num) { ok = true; for (int i = 0 ;i < num ; i++) { cin >> g[i]; } for (int i = 0 ; i < num - 1 ; i++) { sort (g + i , g + num ,cmp); if (num - i <= g[i]) { ok = false; break; } for (int j = i + 1 ; j <= i + g[i] ;j++) { g[j]--; } if (!yes(i + 1)) { ok = false; break; } } if (g[num - 1] != 0) ok = false; if (ok) cout << "Possible\n"; else cout << "Not possible\n"; } }
相关文章推荐
- uva 10720(贪心)
- uva10720 Graph Construction
- uva 10720 Graph Construction
- UVA 10720 Graph Construction(贪心 + Havel-Hakimi定理)
- UVa 10720 - Graph Construction
- uva 10720 Graph Construction
- uva 10720 Graph Construction
- UVA 10720 Graph Construction 贪心+优先队列
- uva 10720 - Graph Construction(贪心-Havel-Hakimi)
- uva10720 - Graph Construction(Havel-Hakimi定理)
- uva 10720 可图化序列
- UVa 10720 - Graph Construction
- UVa 10720 - Graph Construction
- uva 10720 Graph Construction
- UVA 10720 - Graph Construction
- uva 10720 Graph Construction(贪心)
- UVA - 10720 Graph Construction 公式+贪心
- UVA-10720 Graph Construction(Havel-Hakimi定理)
- uva10720 - Graph Construction(简单图的判定)
- uva 10720 - Graph Construction