#P16694. [ICPC 2019 Jakarta R]Road Construction
[ICPC 2019 Jakarta R]Road Construction
题目描述
Numbata 国共有 座城市,编号为 到 。
目前城市之间没有任何道路,因此每座城市都提出了一条候选道路。
城市 希望与城市 相连,于是它提议修建一条连接城市 与城市 的双向道路。
保证不存在两座城市互相提出连接请求。也就是说,不存在 满足:
且
同时保证,如果把全部候选道路都修建出来,任意两座城市之间都能够通过若干道路互相到达。
每座城市还对自己提出的道路允许使用的材料有要求。
材料用一个整数表示,例如:
- 可以表示沥青;
- 可以表示木材;
- 其他整数表示其他材料。
城市 提议的道路 可以使用的材料集合为:
共有 名工人负责修路。
每名工人只熟悉一种材料,因此只能修建使用该材料的道路。第 名工人熟悉的材料为 。
每名工人最多修建一条道路。
你需要为工人分配候选道路,使修建完成后,任意两座城市之间都能通过已建道路互相到达。
一条候选道路最多只能分配给一名工人。
不要求所有工人都参与施工。
输入格式
第一行包含两个整数 :
分别表示城市数量和工人数量。
接下来 行,第 行描述城市 提出的候选道路,格式为:
Ai Mi Bi,1 Bi,2 ... Bi,Mi
其中:
保证:
还保证:
- 不存在两座城市互相提出连接请求;
- 全部候选道路构成的无向图连通。
最后一行包含 个整数:
其中:
表示每名工人熟悉的材料。
输出格式
如果不存在合法分配方案,输出一行:
-1
否则,按工人的输入顺序输出 行。
第 行输出两个整数 :
- 若第 名工人修建连接城市 与 的道路,则输出
u v,两端点顺序任意; - 若第 名工人不修建任何道路,则输出:
0 0
每一对城市之间的候选道路至多分配给一名工人。
只要最终所有城市连通,即可输出任意合法方案。
样例 1
输入
4 5
2 2 1 2
3 2 2 3
4 2 3 4
2 2 4 5
1 2 3 4 5
一种合法输出
1 2
2 3
3 4
0 0
4 2
说明
- 第 名工人修建道路 ;
- 第 名工人修建道路 ;
- 第 名工人修建道路 ;
- 第 名工人不施工;
- 第 名工人修建道路 。
最终任意两座城市都能够互相到达。
样例 2
输入
4 5
2 2 10 20
3 2 2 3
4 2 3 4
2 2 4 5
1 2 3 4 5
输出
-1
说明
没有任何工人能够修建城市 提出的道路,因此城市 一定会被孤立。