#loj5512. 「COI 2024」Ministarstvo

「COI 2024」Ministarstvo

[AdditionalFile5512.zip](file://AdditionalFile5512.zip?type=additional_file)

#5512. 「COI 2024」Ministarstvo

标签: 传统 | 时间限制: 1000 ms | 内存限制: 1024 MiB |

题目描述

译自 COI 2024 T3「Ministarstvo

在某个我们不便透露名称的政党中成功任职后,佩罗在旅游部找到了一份工作。佩罗负责监管一个由 NN 个城市组成的网络,这些城市用 11NN 的数字编号,任意两个城市之间都恰好有一条单向道路。为了增加收入,他决定引入交通许可证。佩罗本想为每条道路都设置一种特殊的许可证,但这会惊动他的上级。因此,他将引入 KK 种不同的许可证,用 11KK 编号,并且每条道路都需要持有特定的许可证才能通行。

为了仍然确保可观的收入,佩罗将满足于以下性质:

  • 对于每个城市 vv,都存在某个城市 uu,使得无法仅使用一种许可证从城市 vv 前往城市 uu

佩罗请求你的帮助,以确定满足所需性质的最小 KK 值(如果这样的分配方案存在的话),如果不存在这样的方案,输出 -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 j,数字 ai,ja_{i, j}aj,ia_{j, i} 中恰好有一个非零。

输出格式

如果不存在具有所需性质的分配方案,则在唯一的一行中输出 -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,表示在该条道路上行驶需要哪种许可证。

样例 1

输入

3
0 1 0
0 0 1
1 0 0

输出

3
0 1 0
0 0 2
3 0 0

样例 2

输入

3
0 1 1
0 0 1
0 0 0

输出

-1

样例 3

输入

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

需要第一种许可证的道路用红色标记,第二种用蓝色,第三种用绿色。

  • 从城市 11,无法仅使用一种许可证到达城市 33
  • 从城市 22,无法仅使用一种许可证到达城市 11
  • 从城市 33,无法仅使用一种许可证到达城市 22
  • 从城市 44,无法仅使用一种许可证到达城市 11

数据范围与提示

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

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 2020 N5N \leq 5
22 8080 无附加限制