QOJ.ac

QOJ

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

#12899. 同步

Statistics

JOI 有限公司在全球共有 $N$ 台服务器。每台服务器都包含一条重要的信息。不同的服务器包含不同的信息。JOI 有限公司目前正在服务器之间建立数字线路,以便在服务器之间共享信息。当两台服务器之间建立线路时,它们之间就可以交换信息。如果两台服务器可以通过已建立的线路相互连通,那么它们之间就可以交换信息。

每台服务器都配备了高性能的同步系统。当两台服务器可以相互交换信息,且它们包含不同的信息时,它们会自动同步这些信息。在服务器 A 和服务器 B 同步后,两台服务器都将包含同步前两台服务器中至少包含的所有信息。

为了降低成本,总共只能建立 $N - 1$ 条线路。在 $N - 1$ 条线路全部建立后,任意两台服务器之间将存在唯一的路径来交换信息,且路径不会经过同一台服务器两次。

最初(时间 0),没有建立任何线路。有时,线路会在恶劣的条件下(例如在沙漠中、在海底)建立。某些线路在某个时刻会变得不可用。一旦线路变得不可用,在它被重新修复之前,将无法使用。

已知在时间 $j$ ($1 \le j \le M$),恰好有一条线路的状态发生改变。 我们需要知道在时间 $M + 1$ 时,某些服务器中包含的不同信息的数量。

题目描述

编写一个程序,给定线路的建立信息和线路的状态变化,确定在最后时刻某些服务器中包含的不同信息的数量。

输入格式

从标准输入读取以下数据。

  • 第一行包含三个空格分隔的整数 $N, M, Q$。这表示服务器的数量为 $N$,给出了 $M$ 次线路状态的改变,我们需要知道 $Q$ 台服务器中包含的不同信息的数量。
  • 接下来的 $N - 1$ 行中的第 $i$ 行 ($1 \le i \le N - 1$) 包含两个空格分隔的整数 $X_i, Y_i$。这表示线路 $i$ 在建立时连接服务器 $X_i$ 和服务器 $Y_i$。
  • 接下来的 $M$ 行中的第 $j$ 行 ($1 \le j \le M$) 包含一个整数 $D_j$。这表示线路 $D_j$ 的状态在时间 $j$ 发生改变。即,如果线路 $D_j$ 在时间 $j$ 之前不可用,则该线路在时间 $j$ 被建立;如果线路 $D_j$ 在时间 $j$ 之前可用,则该线路在时间 $j$ 变得不可用。当状态在时间 $j$ 改变时,所有的同步过程都会在时间 $j + 1$ 之前完成。
  • 接下来的 $Q$ 行中的第 $k$ 行 ($1 \le k \le Q$) 包含一个整数 $C_k$。这表示我们需要知道在最后时刻服务器 $C_k$ 中包含的不同信息的数量。

输出格式

向标准输出写入 $Q$ 行。第 $k$ 行 ($1 \le k \le Q$) 应包含一个整数,即在最后时刻服务器 $C_k$ 中包含的不同信息的数量。

数据范围

所有输入数据满足以下条件:

  • $2 \le N \le 100\,000$
  • $1 \le M \le 200\,000$
  • $1 \le Q \le N$
  • $1 \le X_i \le N, 1 \le Y_i \le N, X_i \neq Y_i$ ($1 \le i \le N - 1$)
  • $1 \le D_j \le N - 1$ ($1 \le j \le M$)
  • $1 \le C_k \le N$ ($1 \le k \le Q$)
  • $C_k$ 的值互不相同。
  • 如果所有线路都已建立,则通过这些线路,任意两台服务器之间都存在路径。

子任务

子任务 1 [30 分]

  • 满足 $Q = 1$。

子任务 2 [30 分]

  • 满足 $X_i = i, Y_i = i + 1$ ($1 \le i \le N - 1$)。

子任务 3 [40 分]

  • 无附加限制。

样例

样例输入 1

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

样例输出 1

3
5
4

说明

最初,我们假设服务器 $i$ ($1 \le i \le 5$) 包含信息 $i$。

  • 在时间 1,线路 1 被建立,服务器 1 和 2 连通。此时,服务器 1 和 2 都包含信息 1 和 2。
  • 在时间 2,线路 2 被建立,服务器 1 和 3 连通。加上线路 1,服务器 1、2、3 连通。服务器 1、2、3 都包含信息 1、2、3。
  • 在时间 3,线路 1 变得不可用,因为它在此时刻之前是可用的。
  • 在时间 4,线路 4 被建立,服务器 2 和 5 连通。此时,服务器 2 和 5 都包含信息 1、2、3、5。注意,服务器 1 和 2 此时无法相互交换信息,因为线路 1 已不可用。
  • 在时间 5,线路 4 变得不可用。
  • 在时间 6,线路 3 被建立,服务器 2 和 4 连通。此时,服务器 2 和 4 都包含信息 1、2、3、4、5。

如上所述,最终服务器 1、4、5 分别包含 3、5、4 种不同的信息。

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.