#HK5084. 「POI2019 R2」社区 Zones
「POI2019 R2」社区 Zones
题目描述
题目译自 XXVI Olimpiada Informatyczna – II etap Osiedla
比特城频发交通事故,市长认为原因是 条双向街道连接 个交叉口的网络过于复杂。他决定将每条街道改为单向,以简化交通。
市长希望此举形成尽可能少的社区。社区定义为一个最大(不可扩展)的交叉口集合,其中从任一交叉口可沿单向街道到达该集合内其他任一交叉口。
你的任务是编写程序,确定最少社区数量及对应的街道单向设置。
输入格式
第一行包含两个整数 ,分别表示交叉口数和街道数。交叉口编号为 至 。
接下来的 行描述街道,第 行包含两个整数 ,表示第 条街道连接交叉口 和 。同一对交叉口可能有多条街道。
输出格式
第一行输出一个整数,表示最优单向设置下的社区数量。
第二行输出一个长度为 的字符串,表示最优单向设置;第 个字符指定第 条街道的方向:> 表示从 到 ,< 表示从 到 。仅允许使用 > 和 <。若存在多种最优设置,输出任意一种。
7 7
1 2
1 3
2 3
3 4
4 5
4 5
7 6
4
><>>><<

图中展示了一种最优单向设置,形成四个社区,交叉口集合为 。例如,虽然可从交叉口 到达 ,但因无法从 回到 ,它们不属同一社区。
附加样例
- ,小型正确性样例。
- ,路径结构(对每个交叉口 ,有街道连接 和 )。
- ,十倍循环(每个交叉口 与 间恰有十条街道)。
- ,对每个交叉口 ,有街道连接 与 和 ;另有两条街道连接 与 。
数据范围与提示
若输出中只有一行正确,仍可获 的分数。若要让第二行正确,需输出两行,第一行必须为 32 位整数(int 类型)。
详细子任务附加限制及分值如下表所示。
| 子任务 | 附加限制 | 分值 |
|---|---|---|
| 无附加限制 |