QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100

#13152. 道路建设

Statistics

在 Numbata 国有 $N$ 座城市,编号从 $1$ 到 $N$。目前,它们之间没有任何道路连接。因此,这 $N$ 座城市中的每一座都提议修建一条道路。

城市 $i$ 希望与城市 $A_i$ 相连,因此城市 $i$ 提议修建一条连接城市 $i$ 和城市 $A_i$ 的直接双向道路。保证没有两座城市互相提议连接对方。换句话说,不存在一对整数 $i$ 和 $j$ 使得 $A_i = j$ 且 $A_j = i$。同时保证,如果所有提议的道路都被修建,那么任意两座城市之间都可以通过一系列修建的道路相互连通。

城市 $i$ 还希望所修建的道路使用特定的材料。每种材料可以用一个整数表示(例如,$0$ 代表沥青,$1$ 代表木材等)。连接城市 $i$ 和城市 $A_i$ 的道路所能使用的材料由包含 $M_i$ 个整数的数组 $B_i$ 表示:$[(B_i)_1, (B_i)_2, \dots, (B_i)_{M_i}]$。这意味着连接城市 $i$ 和城市 $A_i$ 的道路可以使用 $B_i$ 中的任意一种材料修建。

共有 $K$ 名工人负责修建道路。每名工人只熟悉一种材料,因此只能修建使用特定材料的道路。具体来说,第 $i$ 名工人只能修建材料为 $C_i$ 的道路。每名工人最多只能修建一条道路。你需要分配每名工人去修建一条道路,使得任意两座城市之间都可以通过一系列修建的道路相互连通。

输入格式

输入的第一行包含两个整数:$N$ 和 $K$ ($3 \le N \le 2000; 1 \le K \le 2000$),分别代表城市数量和工人数量。接下来的 $N$ 行,每行包含若干整数:$A_i, M_i, (B_i)_1, (B_i)_2, \dots, (B_i)_{M_i}$ ($1 \le A_i \le N; A_i \neq i; 1 \le M_i \le 10\,000; 0 \le (B_i)_1 < (B_i)_2 < \dots < (B_i)_{M_i} \le 10^9$),代表城市 $i$ 希望修建的道路。保证所有 $M_i$ 之和不超过 $10\,000$。同时保证没有两座城市互相提议连接对方,且如果所有提议的道路都被修建,任意两座城市之间都可以通过一系列修建的道路相互连通。最后一行包含 $K$ 个整数:$C_i$ ($0 \le C_i \le 10^9$),代表工人所熟悉的材料。

输出格式

如果无法分配工人修建道路使得任意两座城市之间都能相互连通,直接输出一行 -1。否则,对于每名工人,按照输入顺序,输出一行两个整数(用空格分隔):$u$ 和 $v$(顺序不限)。这意味着该工人修建了一条连接城市 $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

1 2
2 3
3 4
0 0
4 2

说明 1

我们可以分配工人修建以下道路: 第一名工人修建连接城市 $1$ 和城市 $2$ 的道路。 第二名工人修建连接城市 $2$ 和城市 $3$ 的道路。 第三名工人修建连接城市 $3$ 和城市 $4$ 的道路。 第四名工人不修建任何道路。 * 第五名工人修建连接城市 $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

样例输出 2

-1

说明 2

没有工人能够修建连接城市 $1$ 的道路,因此城市 $1$ 必然是孤立的。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.