| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
贴一发~~~#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define ll long long
#define lowbit(i) i&(-i)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int maxn=15;
const int mod=1e9+7;
const double eps=1e-6;
bool graph[maxn][maxn];
struct node{
int degree;
int mark;
bool operator<(const node &a){
return degree>a.degree;
}
};
typedef struct node Map;
Map mp[maxn];
int N;
int main(){
int T;
scanf("%d",&T);
while(T--){
memset(graph,false,sizeof(graph));
scanf("%d",&N);
for(int i=1;i<=N;i++){
scanf("%d",&mp[i].degree);
mp[i].mark=i;
}
int K;
bool flag=false;
for(K=1;K<=N;K++){
if(mp[K].degree>N-K||mp[K].degree<0) break;
sort(mp+K,mp+N+1);
for(int j=K+1;j<=K+mp[K].degree;j++){
if(mp[j].degree<=0) {
flag=true;
break;
}
mp[j].degree--;
graph[mp[K].mark][mp[j].mark]=graph[mp[j].mark][mp[K].mark]=true;
}
if(flag) break;
}
if(K<=N) printf("NO\n");
else {
printf("YES\n");
for(int i=1;i<=N;i++){
int j;
for(j=1;j<N;j++)
printf("%d ",graph[i][j]?1:0);
printf("%d\n",graph[i][j]?1:0);
}
}
if(T) printf("\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator