CF1005F.Berland and the Shortest Paths

提高+/省选-

通过率:0%

时间限制:5.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn cities in Berland. Some pairs of cities are connected by roads. All roads are bidirectional. Each road connects two different cities. There is at most one road between a pair of cities. The cities are numbered from 11 to nn.

It is known that, from the capital (the city with the number 11), you can reach any other city by moving along the roads.

The President of Berland plans to improve the country's road network. The budget is enough to repair exactly n−1n-1 roads. The President plans to choose a set of n−1n-1 roads such that:

  • it is possible to travel from the capital to any other city along the n−1n-1 chosen roads,
  • if did_i is the number of roads needed to travel from the capital to city ii, moving only along the n−1n-1 chosen roads, then d1+d2+⋯+dnd_1 + d_2 + \dots + d_n is minimized (i.e. as minimal as possible).

In other words, the set of n−1n-1 roads should preserve the connectivity of the country, and the sum of distances from city 11 to all cities should be minimized (where you can only use the n−1n-1 chosen roads).

The president instructed the ministry to prepare kk possible options to choose n−1n-1 roads so that both conditions above are met.

Write a program that will find kk possible ways to choose roads for repair. If there are fewer than kk ways, then the program should output all possible valid ways to choose roads.

伯兰有 nn 座城市。某些城市对之间由道路连接。所有道路均为双向的,且每条道路连接两个不同的城市;任意一对城市之间至多存在一条道路。这些城市编号为 11 到 nn。

已知:从首都(编号为 11 的城市)出发,仅沿道路移动,可到达其余任意一座城市。

伯兰总统计划改善该国的道路网络。预算恰好足够修复 n−1n-1 条道路。总统计划从中选出 n−1n-1 条道路,使得:

  • 仅利用这 n−1n-1 条被选中的道路,仍能从首都到达其余任意一座城市;
  • 若记 did_i 为仅沿这 n−1n-1 条被选中的道路、从首都到城市 ii 所需经过的道路数,则总和 d1+d2+⋯+dnd_1 + d_2 + \dots + d_n 尽可能小(即取最小值)。

换言之,所选的 n−1n-1 条道路必须保持全国连通性,且在仅允许使用这些道路的前提下,首都(城市 11)到所有城市的距离之和应最小。

总统已指示相关部门准备 kk 种满足上述两个条件的、选择 n−1n-1 条道路进行修复的可行方案。

请编写一个程序,找出 kk 种满足条件的道路选择方案。若可行方案总数少于 kk 种,则输出全部可行方案。

输入格式

The first line of the input contains integers nn, mm and kk (2≤n≤2⋅105,n−1≤m≤2⋅105,1≤k≤2⋅1052 \le n \le 2\cdot10^5, n-1 \le m \le 2\cdot10^5, 1 \le k \le 2\cdot10^5), where nn is the number of cities in the country, mm is the number of roads and kk is the number of options to choose a set of roads for repair. It is guaranteed that m⋅k≤106m \cdot k \le 10^6.

The following mm lines describe the roads, one road per line. Each line contains two integers aia_i, bib_i (1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i) — the numbers of the cities that the ii-th road connects. There is at most one road between a pair of cities. The given set of roads is such that you can reach any city from the capital.

输入的第一行包含三个整数 nn、mm 和 kk(2≤n≤2⋅1052 \le n \le 2\cdot10^5,n−1≤m≤2⋅105n-1 \le m \le 2\cdot10^5,1≤k≤2⋅1051 \le k \le 2\cdot10^5),其中 nn 表示该国的城市数量,mm 表示道路数量,kk 表示可供选择的待维修道路集合的方案数。保证 m⋅k≤106m \cdot k \le 10^6。

接下来的 mm 行描述了各条道路,每行描述一条道路。每行包含两个整数 aia_i、bib_i(1≤ai,bi≤n1 \le a_i, b_i \le n,ai≠bia_i \ne b_i),表示第 ii 条道路所连接的两座城市的编号。任意一对城市之间至多存在一条道路。给定的道路集合满足:从首都出发可以到达任意一座城市。

输出格式

Print tt (1≤t≤k1 \le t \le k) — the number of ways to choose a set of roads for repair. Recall that you need to find kk different options; if there are fewer than kk of them, then you need to find all possible different valid options.

In the following tt lines, print the options, one per line. Print an option as a string of mm characters where the jj-th character is equal to '1' if the jj-th road is included in the option, and is equal to '0' if the road is not included. The roads should be numbered according to their order in the input. The options can be printed in any order. All the tt lines should be different.

Since it is guaranteed that m⋅k≤106m \cdot k \le 10^6, the total length of all the tt lines will not exceed 10610^6.

If there are several answers, output any of them.

输出 tt(1≤t≤k1 \le t \le k)—— 即选择待修复道路集合的方案数。注意,你需要找出 kk 个互不相同的方案;若合法方案总数少于 kk,则需输出所有可能的、互不相同的合法方案。

接下来 tt 行中,每行输出一个方案。每个方案表示为一个长度为 mm 的字符串,其中第 jj 个字符为 '1' 表示第 jj 条道路被选入该方案,为 '0' 表示未被选入。道路编号按其在输入中的顺序确定。各方案的输出顺序任意,但所输出的 tt 行字符串必须互不相同。

由于题目保证 m⋅k≤106m \cdot k \le 10^6,因此所有 tt 行字符串的总长度不会超过 10610^6。

若存在多个合法答案,输出任意一个即可。

输入输出样例

  • 输入#1

    4 4 3
    1 2
    2 3
    1 4
    4 3

    输出#1

    2
    1110
    1011
  • 输入#2

    4 6 3
    1 2
    2 3
    1 4
    4 3
    2 4
    1 3

    输出#2

    1
    101001
  • 输入#3

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

    输出#3

    2
    111100
    110110

输入解题思路,AI测评打分。不知道怎么写?

首页