poj 1659 Frogs' Neighborhood

来源:互联网 发布:中日二战实力对比 知乎 编辑:程序博客网 时间:2024/04/28 08:05
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;struct node{    int num;    int sum;} p[25];bool cmp(node a,node b){    return a.sum>b.sum;}int main(){    int flag,t,n,i,j,mp[25][25],d1;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        for(i=0; i<n; i++)        {            scanf("%d",&p[i].sum);            p[i].num=i;        }        flag=1;        memset(mp,0,sizeof(mp));        for(j=0;j<n;j++)        {            sort(p,p+n,cmp);            d1=p[j].sum;            if(d1>n-j-1) {flag=0;break;}            for(i=1;i<=d1;i++)            {                p[i+j].sum--;                if(p[i+j].sum<0) {flag=0;break;}                mp[p[j].num][p[i+j].num]=mp[p[i+j].num][p[j].num]=1;            }            if(!flag) break;        }        if(flag)        {            printf("YES\n");            for(i=0; i<n; i++)            {                for(j=0; j<n; j++)                {                    if(j) printf(" %d",mp[i][j]);                    else printf("%d",mp[i][j]);                }                printf("\n");            }        }        else printf("NO\n");        if(t) printf("\n");    }    return 0;}
0 0
原创粉丝点击