QOJ.ac

QOJ

Time Limit: 6.0 s Memory Limit: 1024 MB Total points: 100

#17175. 通信网络 2

الإحصائيات

一个通信网络由若干计算机和若干链路组成。计算机编号为 $0$ 到 $N-1$。一条链路允许两个不同的计算机进行双向通信。也就是说,该通信网络是一个具有 $N$ 个顶点的无向图,每条链路是一条连接两个不同顶点的边。初始时,通信网络中没有任何链路。

每一秒,会有多条链路被加入或移除。具体来说,对于每个 $u = 0, 1, 2, \dots, T-1$,给定一个由若干条互不相同的链路构成的集合 $E_u$。在时刻 $u + 0.5$,通信网络按照以下规则进行更新:

  • 如果 $E_u$ 中的一条链路在当前通信网络中不存在,则将该链路加入通信网络。
  • 如果 $E_u$ 中的一条链路在当前通信网络中已存在,则将该链路从通信网络中移除。

对于任意整数 $t$ 和两台计算机 $a$ 与 $b$,如果在时刻 $t$ 的通信网络中,存在一条仅由当前存在的链路构成的路径连接 $a$ 与 $b$,则称计算机 $a$ 和 $b$ 在时刻 $t$ 连通。如果 $a = b$,则无论链路情况如何,总是视为连通。

此外,对于任意整数区间 $[l, r]$ 和两台计算机 $a$ 与 $b$,如果对于所有 $t = l, l+1, \dots, r$,计算机 $a$ 与 $b$ 在时刻 $t$ 均连通,则称计算机 $a$ 与 $b$ 在时间区间 $[l, r]$ 内始终连通。

为了研究在特定时间区间内哪些计算机能够稳定地相互通信,你需要回答以下查询:

给定一台计算机 $x$ 和时间区间 $[l, r]$,求有多少台计算机 $y$ 满足计算机 $x$ 与 $y$ 在时间区间 $[l, r]$ 内始终连通。($0 \le x \le N-1$,$0 \le l \le r \le T$,$0 \le y \le N-1$)

函数说明

你需要实现如下函数:

vector<int> count_computers(int N, int T, int Q, vector<vector<array<int,2>>> E, vector<array<int,3>> F)
  • $E$:表示被加入或移除的链路集合。$E$ 的大小为 $T$。每个 $E[i]$ 是一个包含至少 $1$ 条互不相同链路的数组,表示集合 $E_i$。每条链路由一个大小为 $2$ 的数组 $[a, b]$ 表示($a < b$),表示连接计算机 $a$ 和 $b$。
  • $F$:表示查询的数组。$F$ 的大小为 $Q$。对于所有 $i$($0 \le i \le Q-1$),$F[i]$ 表示第 $i$ 个查询。每个查询是一个大小为 $3$ 的数组 $[x, l, r]$,其中 $x$ 表示计算机编号,$l, r$ 表示时间区间。

该函数应返回一个大小为 $Q$ 的整数数组 $R$。对于所有 $j$($0 \le j \le Q-1$),$R[j]$ 表示第 $j$ 个查询的答案。

该函数只会被调用一次。

提交的源代码在任何部分都不得执行输入/输出函数。

限制

  • $2 \le N \le 100\,000$
  • $1 \le T \le 100\,000$
  • $1 \le Q \le 250\,000$
  • 每个 $E_i$ 中的链路互不相同。
  • 设 $S = \sum_{0 \le i \le T-1} |E_i|$,则 $S \le 100\,000$。
  • 输入中每条链路均满足 $0 \le a < b \le N-1$。
  • 每个查询满足 $0 \le x \le N-1$,$0 \le l \le r \le T$。

子任务

编号 分值 限制条件
1 5 $N, S, Q \le 100$
2 12 $N, S, Q \le 5\,000$
3 19 对所有查询,$l = r$
4 23 对每条出现在 $E$ 中的链路 $[a, b]$,满足 $\lvert a - b \rvert = 1$
5 41 无额外限制

样例数据

考虑如下函数调用:


count_computers(
4, 5, 7,
[
[[0, 1], [1, 2]],
[[2, 3], [1, 3]],
[[0, 1], [0, 3]],
[[0, 1], [1, 2], [0, 3], [2, 3]],
[[1, 3]]
],
[
[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[0, 0, 5],
[2, 1, 3],
[1, 1, 4],
[3, 2, 3]
]
)

通信网络中共有 $4$ 台计算机。

各时刻通信网络的链路情况如下:

  • 时刻 $0$:无链路。
  • 时刻 $1$:链路 $(0,1)$,$(1,2)$。
  • 时刻 $2$:链路 $(0,1)$,$(1,2)$,$(2,3)$,$(1,3)$。
  • 时刻 $3$:链路 $(1,2)$,$(2,3)$,$(1,3)$,$(0,3)$。
  • 时刻 $4$:链路 $(0,1)$,$(1,3)$。
  • 时刻 $5$:链路 $(0,1)$。

共有 $7$ 个查询:

  • 查询 $0$:在时刻 $1$,计算机 $1$ 与计算机 $\{0,1,2\}$ 连通。
  • 查询 $1$:在时刻 $2$,计算机 $2$ 与计算机 $\{0,1,2,3\}$ 连通。
  • 查询 $2$:在时刻 $3$,计算机 $3$ 与计算机 $\{0,1,2,3\}$ 连通。
  • 查询 $3$:由于时刻 $0$ 没有链路,从时刻 $0$ 到 $5$,计算机 $0$ 仅与自身连通。
  • 查询 $4$:从时刻 $1$ 到 $3$,计算机 $2$ 与计算机 $\{0,1,2\}$ 连通。
  • 查询 $5$:从时刻 $1$ 到 $4$,计算机 $1$ 与计算机 $\{0,1\}$ 连通。
  • 查询 $6$:从时刻 $2$ 到 $3$,计算机 $3$ 与计算机 $\{0,1,2,3\}$ 连通。

因此函数应返回:

[3, 4, 4, 1, 3, 2, 4]

实现细节

样例评测程序的输入格式如下。

第一行:$N$ $T$ $Q$

对于所有 $0 \le i \le T-1$:

  • 一行:$|E_i|$
  • 接下来 $|E_i|$ 行:每行两个整数 $a$ $b$,表示 $E_i$ 中的一条链路。

对于所有 $0 \le i \le Q-1$:

  • 一行:$x$ $l$ $r$

样例评测程序的输出格式如下:

  • 共 $Q$ 行,第 $i$ 行输出 $R[i]$。 ```

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.