⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4385236_ac_0ms_320k.cc

📁 北大大牛代码 1240道题的原代码 超级权威
💻 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 + -