📄 pku1659.cpp
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
int n, id;
}Node;
int cp(const void *a, const void *b)
{
Node *aa = (Node *)a;
Node *bb = (Node *)b;
return bb->n - aa->n;
}
void Solve(int *nb, int N)
{
int st[11][11];
int i, j;
Node nd[11];
memset(st, 0, sizeof(st));
for (i = 0; i < N; i++)
{
nd[i].n = nb[i];
nd[i].id = i;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (nd[j].id == i)
{
nd[j].n = 0;
break;
}
}
qsort(nd, N, sizeof(nd[0]), cp);
for (j = 0; j < nb[i]; j++)
{
st[i][nd[j].id] = 1;
st[nd[j].id][i] = 1;
nd[j].n--;
if (nd[j].n < 0)
{
printf("NO\n\n");
return;
}
nb[nd[j].id]--;
}
}
printf("YES\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N - 1; j++)
{
printf("%d ", st[i][j]);
}
printf("%d\n", st[i][N - 1]);
}
printf("\n");
}
int main()
{
int T, N, i;
int nb[11];
scanf("%d", &T);
while (T--)
{
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &nb[i]);
}
Solve(nb, N);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -