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;}