#include <cstdio>
#include <cstdlib>
#include <algorithm>
int main(){
int degree[10005];
int n;
bool ans;
int num;
while(1){
scanf("%d", &n);
if(n == 0){ break; }
for (int i = 0; i < n; ++i)
scanf("%d", °ree[i]);
ans = true;
std::sort(degree, degree+n);
num = 0;
while(1){
if(degree[n-1] >= n)
ans = false;
if(degree[n-1] == 0 || ans == false)
break;
for (int i = n-2; i >= n-1-degree[n-1]; --i){
if(degree[i] == 0){
ans = false;
break;
}
degree[i]--;
}
degree[n-1] = 0;
std::swap(degree[num], degree[n-1]);
num++;
std::sort(degree+num, degree+n);
}
printf("%s\n", ans ? "Yes":"No");
}
}
2015年1月29日 星期四
TIOJ 1210 圖論 之 簡單圖測試
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言