#1068. 1-08G. JM的最短路径问题

内存限制:512 MiB 时间限制:750 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: JM233333

题目描述

JM今天懒得编题面了,于是他直接把题意赤裸裸地甩了出来:

给定一个 个点、 条边的无向连通图,节点编号为 ,边的编号为 ,每条边的长度均为

表示图上从节点 到节点 的最短路径长度。要求在这 条边中选择恰好 条边,将其余边全部删除,使得 的值最小。

现在,你需要求出使得 最小的选边方案有多少种,并输出所有的合法方案。输出格式为 ,其中 表示编号为 的边选或不选。输出时按照01串 的字典序从大到小输出。具体可参考输出样例。

当然,在某些情况下,合法的方案数可能会非常大。因此另外给定一个正整数 ,若合法的方案数超过 种,则你需要输出的合法方案数为 ,并且接下来只输出字典序前 大的 种合法方案。

输入格式

第一行三个正整数 ,其中 分别表示图的点数和边数, 表示你需要输出的最大方案数。

接下来 行,第 行表示编号为 的边,每行两个正整数 ,表示这条双向边所连接的两个节点的编号。

输入保证图是连通的。

输出格式

第一行一个正整数 ,表示使得 最小的选边方案有多少种。如果方案数超过 ,则输出 而不是实际的方案数,也就是说你需要输出

接下来 行,每行一个01串 ,表示一种合法的方案。输出时按照01串 的字典序从大到小输出。若合法的方案数超过 种,则只输出字典序前 大的 种合法方案。

样例

样例输入1

3 2 1000
1 2
1 3

样例输出1

1
11

样例输入2

3 3 1000
1 2
2 3
3 1

样例输出2

1
101

样例输入3

5 6 1000
1 2
1 3
2 4
2 5
3 4
3 5

样例输出3

4
111100
111001
110110
110011

数据范围与提示

Hint

本题输出量较大,请使用scanf/printf以免I/O时间过长导致TLE。