QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 1024 MB 満点: 100

#7160. Sopsug

統計

Grushög 是隆德郊区一个未完工的住宅区。目前,所有必要的基础设施都在建设中,包括最重要的设施:垃圾处理系统。和瑞典的许多地区一样,这里将使用一种 sopsug(自动真空收集系统)来收集垃圾。其构想是通过管道利用气压在地下运输垃圾。

Grushög 有 $N$ 栋建筑,编号从 $0$ 到 $N - 1$。你的任务是连接一些建筑对,建立管道。如果你建立了一条从建筑 $u$ 到另一栋建筑 $v$ 的管道,那么 $u$ 会将其所有的垃圾发送给 $v$(反之则不然)。你的目标是建立一个包含 $N - 1$ 条管道的网络,使得所有的垃圾最终都汇集到一栋建筑中。换句话说,你希望该网络构成一棵有根树,其中所有边都指向根节点。

然而,建筑之间已经建造了 $M$ 条管道。这些管道必须包含在你的网络中。这些管道是有向的,因此只能沿一个方向使用。

此外,有 $K$ 对建筑之间无法建造管道。这些建筑对是有序的,因此如果无法从 $u$ 建造管道到 $v$,但仍有可能从 $v$ 建造管道到 $u$。

输入格式

输入的第一行包含三个整数 $N, M$ 和 $K$。

接下来的 $M$ 行,每行包含两个不同的整数 $a_i, b_i$,表示已经存在一条从 $a_i$ 到 $b_i$ 的管道。

接下来的 $K$ 行,每行包含两个不同的整数 $c_i, d_i$,表示无法建造从 $c_i$ 到 $d_i$ 的管道。

输入中所有的 $M + K$ 个有序对都是不同的。注意 $(u, v)$ 和 $(v, u)$ 被视为不同的对。

输出格式

如果没有解,输出 “NO”。

否则,输出 $N - 1$ 行,每行包含两个整数 $u_i, v_i$,表示应该建立一条从 $u_i$ 指向 $v_i$ 的管道。你可以按任意顺序打印这些管道。如果存在多个解,你可以打印其中任何一个。请记住,所有 $M$ 条已有的管道必须包含在你的解中。

数据范围

  • $2 \le N \le 300\,000$
  • $0 \le M \le 300\,000$
  • $0 \le K \le 300\,000$
  • $0 \le a_i, b_i \le N - 1$,对于 $i = 0, 1, \dots, M - 1$
  • $0 \le c_i, d_i \le N - 1$,对于 $i = 0, 1, \dots, K - 1$

子任务

子任务 分值 限制
1 12 $M = 0$ 且 $K = 1$
2 10 $M = 0$ 且 $K = 2$
3 19 $K = 0$
4 13 $N \le 100$
5 17 保证存在以 $0$ 为根的解
6 11 $M = 0$
7 18 无额外限制

样例

下图展示了第一和第二个样例测试用例。蓝色边标记了已经建造的管道,虚线红色边标记了无法建造的管道。

左图展示了第一个样例及其对应的样例输出解,图中显示了黑色边(以及蓝色的从 $4$ 到 $1$ 的已有管道)。在这个网络中,所有垃圾都将汇集到建筑 $0$。这并不是唯一的解;例如,从 $1$ 到 $3$ 的管道可以替换为从 $0$ 到 $1$ 的管道,这仍然是一个有效的解。

对于第二个样例输入,我们可以从右图中看到,由于存在环 $(2, 3, 4)$,因此无法构建出解。

样例输入 1

5 1 8
4 1
3 1
3 4
3 2
0 2
0 4
2 4
1 0
2 0

样例输出 1

4 1
3 0
1 3
2 3

样例输入 2

5 4 0
1 0
2 3
3 4
4 2

样例输出 2

NO

样例输入 3

3 0 1
0 1

样例输出 3

1 0
2 0

样例输入 4

4 0 2
0 1
1 0

样例输出 4

2 0
3 0
1 3

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.