CF746G.New Roads
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
There are n cities in Berland, each of them has a unique id — an integer from 1 to n, the capital is the one with id 1. Now there is a serious problem in Berland with roads — there are no roads.
That is why there was a decision to build n - 1 roads so that there will be exactly one simple path between each pair of cities.
In the construction plan t integers _a_1, _a_2, ..., a__t were stated, where t equals to the distance from the capital to the most distant city, concerning new roads. a__i equals the number of cities which should be at the distance i from the capital. The distance between two cities is the number of roads one has to pass on the way from one city to another.
Also, it was decided that among all the cities except the capital there should be exactly k cities with exactly one road going from each of them. Such cities are dead-ends and can't be economically attractive. In calculation of these cities the capital is not taken into consideration regardless of the number of roads from it.
Your task is to offer a plan of road's construction which satisfies all the described conditions or to inform that it is impossible.
伯兰德有 n 座城市,每座城市都有一个唯一的编号——从 1 到 n 的整数,其中编号为 1 的城市是首都。目前伯兰德的道路系统存在严重问题:没有道路。
因此,决定修建 n−1 条道路,使得任意两座城市之间恰好存在一条简单路径(即构成一棵树)。
在建设计划中,给出了 t 个整数 a1,a2,…,at,其中 t 表示在新建道路网络中,首都到最远城市的距离(即树的深度)。对每个 i(1≤i≤t),ai 表示距离首都恰好为 i 的城市数量。两座城市之间的距离定义为从一座城市到达另一座城市所需经过的道路条数。
此外,还规定:除首都外的所有城市中,恰好有 k 座城市只连出一条道路(即度数为 1)。这类城市被称为“死胡同”,经济吸引力较差。在统计这类城市时,首都不参与计数(无论其度数是多少)。
你的任务是:给出一个满足上述所有条件的道路建设方案;若不存在这样的方案,则说明其不可能性。
输入格式
The first line contains three positive numbers n, t and k (2 ≤ n ≤ 2·105, 1 ≤ t, k < n) — the distance to the most distant city from the capital and the number of cities which should be dead-ends (the capital in this number is not taken into consideration).
The second line contains a sequence of t integers _a_1, _a_2, ..., a__t (1 ≤ a__i < n), the i-th number is the number of cities which should be at the distance i from the capital. It is guaranteed that the sum of all the values a__i equals n - 1.
第一行包含三个正整数 n、t 和 k(2 ≤ n ≤ 2⋅105,1 ≤ t,k < n)—— 分别表示距首都最远城市的距离,以及应为死胡同的城市数量(此处不将首都计入该数量中)。
第二行包含一个由 t 个整数组成的序列 a1,a2,…,at(1 ≤ ai < n),其中第 i 个数表示距首都距离恰好为 i 的城市数量。保证所有 ai 的总和等于 n−1。
输出格式
If it is impossible to built roads which satisfy all conditions, print -1.
Otherwise, in the first line print one integer n — the number of cities in Berland. In the each of the next n - 1 line print two integers — the ids of cities that are connected by a road. Each road should be printed exactly once. You can print the roads and the cities connected by a road in any order.
If there are multiple answers, print any of them. Remember that the capital has id 1.
如果无法修建满足所有条件的道路,则输出 -1。
否则,第一行输出一个整数 n —— 表示 Berland 的城市数量。接下来的 n−1 行中,每行输出两个整数 —— 表示由一条道路连接的两座城市的编号。每条道路恰好输出一次。你可以以任意顺序输出道路以及每条道路所连接的两座城市。
若存在多个合法答案,输出任意一个即可。注意:首都的城市编号为 1。
输入输出样例
输入#1
7 3 3 2 3 1
输出#1
7 1 3 2 1 2 6 2 4 7 4 3 5
输入#2
14 5 6 4 4 2 2 1
输出#2
14 3 1 1 4 11 6 1 2 10 13 6 10 10 12 14 12 8 4 5 1 3 7 2 6 5 9
输入#3
3 1 1 2
输出#3
-1
输入解题思路,AI测评打分。不知道怎么写?