luogu#P10751. [COI 2023-2024] Ministarstvo(征集 checker)

    ID: 14687 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>2023Special JudgeCOCI(克罗地亚)

[COI 2023-2024] Ministarstvo(征集 checker)

题目背景

题目来源:https://hsin.hr/hio2024/。翻译来自 文心一言。如果有更好的翻译请在讨论区提供。

题目描述

经过在派对中成功的职业生涯后(我们不会透露这个派对的名字),Pero 在旅游局找到了一份工作。他监管着一个由 NN 个城市组成的网络,这些城市从 11NN 进行编号,每对城市之间都有一条单向道路相连。为了增加收入,他决定引入交通许可。Pero 原本希望为每条道路都引入一种特殊的许可,但这会引起上级的注意。因此,他决定引入 KK 种不同的许可,从 11KK 进行编号,并规定每条道路上行驶都需要持有特定的许可。

为了确保可观的收入,Pero 将满足以下属性:

  • 对于每个城市 vv,都存在一个城市 uu,使得无法仅凭一种许可从城市 vv 行驶到城市 uu

Pero 请求你的帮助来确定最小的 KK 值,如果存在满足上述属性的许可分配方案,则输出这个 KK 值以及许可分配方案。如果不存在这样的分配方案,则输出 1-1

输入格式

第一行包含一个正整数 NN

接下来的 NN 行中,第 ii 行包含 NN 个数字 ai,ja_{i,j},其中如果有一条从城市 ii 到城市 jj 的道路,则 ai,j=1a_{i,j} = 1。注意 ai,i=0a_{i,i} = 0,且对于 iji \neq jai,ja_{i,j}aj,ia_{j,i} 中只有一个非零。

输出格式

如果不存在满足属性的分配方案,则在第一行且仅第一行输出 1-1

否则,在第一行输出最小的正整数 KK

在接下来的 NN 行中,输出分配方案的描述。第 ii 行输出 NN 个数字 bi,jb_{i,j},如果 ai,j=0a_{i,j} = 0,则 bi,j=0b_{i,j} = 0;否则,1bi,jK1 \leq b_{i,j} \leq K,表示在该道路上行驶需要哪种许可。

3
0 1 0
0 0 1
1 0 0
3
0 1 0
0 0 2
3 0 0
3
0 1 1
0 0 1
0 0 0
-1
4
0 1 0 1
0 0 1 1
1 0 0 0
0 0 1 0
3
0 1 0 1
0 0 2 3
3 0 0 0
0 0 2 0

提示

【样例解释】

对于样例 33:需要第一个许可证的道路用红色标记,第二个许可证用蓝色,第三个许可证用绿色。从城市 11 出发,仅使用一个许可证无法到达城市 33。从城市 22 出发,仅使用一个许可证无法到达城市 11。从城市 33 出发,仅使用一个许可证无法到达城市 22。从城市 44 出发,仅使用一个许可证无法到达城市 11

【数据范围】

在所有子任务中,2N10002 \leq N \leq 1000。在每个子任务中, 15%15\% 的分数仅用于判断是否存在这样的分配方案。对于这些分数,如果你不输出 1-1,你需要输出某个分配方案,但它不必满足 Pero 所期望的属性。

  • 子任务 1(20 分):N5N\leq 5
  • 子任务 2(80 分):无其他约束限制。