📄 4385236_ac_0ms_320k.cc
字号:
#include <stdio.h>
#include <functional>
#include <vector>
#include <algorithm>
using namespace std;
int d[10], index[10];
int map[10][10];
bool cmp(int a, int b)
{
return d[a] > d[b];
}
void solve()
{
int n, i;
scanf("%d", &n);
memset(map, 0, sizeof map);
for (i = 0; i < n; i++)
{
scanf("%d", &d[i]);
index[i] = i;
}
sort(index, index + n, cmp);
for (i = 0; i < n; i++)
{
if (d[index[i]] == 0)
{
break;
}
for (int j = i + 1; j <= i + d[index[i]]; j++)
{
if (j >= n || d[index[j]] == 0)
{
puts("NO");
return ;
}
d[index[j]]--;
map[index[i]][index[j]] = 1;
map[index[j]][index[i]] = 1;
}
d[index[i]] = 0;
sort(&index[i + 1], &index[i + 1] + n - i - 1, cmp);
}
for (i = 0; i < n; i++)
{
if (d[i] != 0)
{
puts("NO");
return ;
}
}
puts("YES");
for (i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ", map[i][j]);
}
puts("");
}
}
int main()
{
int t;
scanf("%d", &t);
while (t-- != 0)
{
solve();
puts("");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -