#L5084. 「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类型)。
| 子任务 | 附加限制 | 分值 |
|---|---|---|
| 1 | 16 | |
| 2 | , | 12 |
| 3 | 20 | |
| 4 | 无附加限制 | 52 |