CF404C.Restore Graph
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Valera had an undirected connected graph without self-loops and multiple edges consisting of n vertices. The graph had an interesting property: there were at most k edges adjacent to each of its vertices. For convenience, we will assume that the graph vertices were indexed by integers from 1 to n .
One day Valera counted the shortest distances from one of the graph vertices to all other ones and wrote them out in array d . Thus, element d[i] of the array shows the shortest distance from the vertex Valera chose to vertex number i .
Then something irreparable terrible happened. Valera lost the initial graph. However, he still has the array d . Help him restore the lost graph.
输入格式
The first line contains two space-separated integers n and k (1<=k<n<=105) . Number n shows the number of vertices in the original graph. Number k shows that at most k edges were adjacent to each vertex in the original graph.
The second line contains space-separated integers d[1],d[2],...,d[n] (0<=d[i]<n) . Number d[i] shows the shortest distance from the vertex Valera chose to the vertex number i .
输出格式
If Valera made a mistake in his notes and the required graph doesn't exist, print in the first line number -1. Otherwise, in the first line print integer m (0<=m<=106) — the number of edges in the found graph.
In each of the next m lines print two space-separated integers ai and bi (1<=ai,bi<=n; ai=bi) , denoting the edge that connects vertices with numbers ai and bi . The graph shouldn't contain self-loops and multiple edges. If there are multiple possible answers, print any of them.
输入输出样例
输入#1
3 2 0 1 1
输出#1
3 1 2 1 3 3 2
输入#2
4 2 2 0 1 3
输出#2
3 1 3 1 4 2 3
输入#3
3 1 0 0 0
输出#3
-1