QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 512 MB Points totaux : 100

#326. 化学表

Statistiques

Innopolis 大学的科学家们正在持续研究元素周期表。已知共有 $n \cdot m$ 种元素,它们构成了一个 $n$ 行 $m$ 列的矩形周期表。每个元素都可以用其在表中的坐标 $(r, c)$ ($1 \le r \le n, 1 \le c \le m$) 来描述。科学家们最近发现,对于表中任意四个构成矩形的元素(即四条边分别平行于表格边界),如果已知其中三个元素的样本,就可以通过核聚变产生第四个元素的样本。也就是说,如果我们拥有位置为 $(r_1, c_1), (r_1, c_2), (r_2, c_1)$ 的元素,其中 $r_1 \neq r_2$ 且 $c_1 \neq c_2$,那么我们就可以产生元素 $(r_2, c_2)$。

原始的元素样本以及新合成的元素样本都可以再次用于未来的核聚变。

Innopolis 大学的科学家们已经拥有了 $q$ 个元素的样本。他们希望获得所有 $n \cdot m$ 个元素的样本。为了实现这一目标,他们将从其他实验室购买一些样本,然后通过任意次数的核聚变(按某种顺序)产生所有剩余的元素。请帮助他们找出需要购买的元素的最少数量。

输入格式

第一行包含三个整数 $n, m, q$ ($1 \le n, m \le 200\,000; 0 \le q \le \min(n \cdot m, 200\,000)$),分别表示化学表的维度和科学家已经拥有的元素数量。接下来的 $q$ 行,每行包含两个整数 $r_i, c_i$ ($1 \le r_i \le n, 1 \le c_i \le m$),描述了科学家已经拥有的元素。输入中的所有元素各不相同。

输出格式

仅输出一行,包含一个整数 $k$,即需要购买的元素的最少数量。

子任务

子任务 分值 $n$ $m$ $q$ 依赖
0 0
1 10 $n = 2$ $m = 2$ $0 \le q \le 4$
2 8 $n = 1$ $1 \le m \le 20$ $0 \le q \le 20$
3 9 $n = 2$ $1 \le m \le 20$ $0 \le q \le 40$ 1
4 8 $1 \le n \le 20$ $1 \le m \le 20$ $q = 0$
5 20 $1 \le n \le 20$ $1 \le m \le 20$ $0 \le q \le 400$ 1—4
6 10 $1 \le n \le 100$ $1 \le m \le 100$ $0 \le q \le 10\,000$ 1—5
7 10 $1 \le n \le 250$ $1 \le m \le 250$ $0 \le q \le 62\,500$ 1—6
8 10 $1 \le n \le 10\,000$ $1 \le m \le 10\,000$ $0 \le q \le 100\,000$ 1—7
9 15 $1 \le n \le 200\,000$ $1 \le m \le 200\,000$ $0 \le q \le 200\,000$ 1—8

样例

输入 1

2 2 3
1 2
2 2
2 1

输出 1

0

输入 2

1 5 3
1 3
1 1
1 5

输出 2

2

输入 3

4 3 6
1 2
1 3
2 2
2 3
3 1
3 3

输出 3

1

说明

图片解释了样例。 第一张图片描述了初始可用的元素样本集。黑色叉号表示实验室最初拥有的元素。 第二张图片描述了如何获得剩余的样本。红色虚线圆圈表示需要从其他实验室购买的元素(最优解应使红色圆圈的数量最少)。蓝色虚线圆圈表示可以通过核聚变产生的元素。它们按照可以产生的顺序进行了编号。

测试 1 我们可以使用核聚变从其他三个样本中获得该元素,因此不需要购买任何东西。

测试 2 我们无法使用任何核聚变,因为只有一行,所以我们必须购买所有缺失的元素。

测试 3 请注意,在购买一个元素后,仍然无法产生顶行中间的元素(标记为 4)。因此,我们先产生左下角的元素(标记为 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.