POJ1659-由度序列构图

来源:互联网 发布:html5书籍推荐 知乎 编辑:程序博客网 时间:2024/06/06 04:28
/*图论简明介绍米白看,数据小,是容易题*/#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int NN=12;int n;struct node{    int id,nb;}frog[NN];bool operator<(const node &a,const node &b){    return a.nb>b.nb;}bool build(){    int link[NN][NN];    memset(link,0,sizeof(link));    for (int i=0; i<n; i++)    {        sort(frog+i,frog+n);        if (frog[i].nb>n-i-1) return false;        for (int j=i+1; j<=i+frog[i].nb; j++)        {            if (!frog[j].nb) return false;            frog[j].nb--;            link[frog[i].id][frog[j].id]=1;            link[frog[j].id][frog[i].id]=1;        }        frog[i].nb=0;    }    printf("YES\n");    for (int i=0; i<n; i++,printf("\n"))      for (int j=0; j<n; j++)          printf("%d ",link[i][j]);    return true;}int main(){    int cas;    scanf("%d",&cas);    while (cas--)    {        scanf("%d",&n);        for (int i=0; i<n; i++) frog[i].id=i;        for (int i=0; i<n; i++)        {            scanf("%d",&frog[i].nb);        }        if (!build()) printf("NO\n");        printf("\n");    }    return 0;}