#CF1005F. D94 最短路径树 BFS 算法 Berland and the Shortest Paths
D94 最短路径树 BFS 算法 Berland and the Shortest Paths
CF1005F Berland and the Shortest Paths
题目描述
Berland 有 座城市。一些城市通过道路连接。所有道路都是双向的。每条道路连接两个不同的城市。一对城市之间至多有一条道路。城市从 到 编号。
众所周知,从首都(编号为 的城市),您可以沿着道路移动并到达任何其他城市。
Berland 的总统计划改善该国的道路网。预算足以修复 道路。总统计划选择 条道路,要求:
- 从首都出发沿着这 条道路走可以到达其他所有的城市。
- 如果 表示首都到 号城市所需经过的路的条数,沿着选择的 n-1 条路走所得的 ++・・・+ 应是最小的。
换句话说,这 条道路的应该保持国家的连通性,并且使从城市 到所有城市的距离的总和最小(你只能使用被选择的 道路)。
总统命令有关部门准备 个可能的选择,选择的 条道路同时满足以上两个条件。
编写一个程序,找到 种可能的方法来选择道路进行维修。如果少于 种选法,则程序应输出所有可能的有效方式来选择道路。
输入格式
输入的第一行包含整数 是这个国家的城市数, 是道路数,并且 是选 条道路修复的方案数。 数据保证
接下来的 行描述路的情况,每条路的描述占一行。每行包括两个整数 —— 第 条道路连接的两座城市的编号。一对城市最多有一条路连接。给定的路足以使你从首都出发到达任意城市。
输出格式
输出 — 可选择的方案数量。记得你需要找到 种不同的可行解,如果解的个数少于 种,你需要输出所有可行解。
在接下来的 行中,输出道路选择情况,一种一行。用 个字符的字符串输出选择情况,其中,第 个字符表示第 条道路是否被选中,若是则用 表示,若不是则用 表示。路应该按照它们输入的顺序编号。各种选择情况的输出没有指定顺序。 行的所有输出应该不同。
因为题目保证 行输出的总长不超过
如果有很多组答案,任意输出它们中的一些即可。
输入输出样例 #1
输入 #1
4 4 3
1 2
2 3
1 4
4 3
输出 #1
2
1110
1011
输入输出样例 #2
输入 #2
4 6 3
1 2
2 3
1 4
4 3
2 4
1 3
输出 #2
1
101001
输入输出样例 #3
输入 #3
5 6 2
1 2
1 3
2 4
2 5
3 4
3 5
输出 #3
2
111100
110110