描述:因为是简单图,所以先判断角度和是否为偶数,然后再需要用优先队列,从大到小进行排除
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
using namespace std;
priority_queue <int> p;
int num[10010];
int main()
{
// freopen("a.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF)
{
if(!n) break;
int sum=0,x;
while(!p.empty()) p.pop();
for(int i=0; i<n; i++)
{
scanf("%d",&x);
if(x%2==1) sum++;
if(sum%2==0) sum=0;
if(x) p.push(x);
}
if(!sum)
{
while(!p.empty())
{
x=0;
int c=p.top();
p.pop();
while(!p.empty())
{
if(c==0) break;
if(p.top()>0)
{
num[x++]=p.top()-1;
c--;
p.pop();
}
}
if(c>0)
{
sum=1;
break;
}
for(int i=0; i<x; i++) if(num[i]>0) p.push(num[i]);
}
if(!sum) printf("Possible\n");
else printf("Not possible\n");
}
else printf("Not possible\n");
}
return 0;
}
10720 - Graph Construction
最新推荐文章于 2022-12-14 17:41:30 发布