QOJ.ac

QOJ

حد الوقت: 3 s حد الذاكرة: 256 MB مجموع النقاط: 100

#367. 长廊

الإحصائيات

JOI-kun 的家附近有一座宽敞的宅邸。这座宅邸有 $N$ 个房间,从东向西排成一排。从最东端的房间开始,第 $i$ 个房间被称为房间 $i$。对于每个 $1 \le i \le N - 1$,房间 $i$ 和房间 $i + 1$ 之间由一条走廊连接。走廊可以双向通行。我们需要一把钥匙才能从房间进入走廊。每把钥匙都有一个编号,称为类型。同一种类型的钥匙可以有多把。

从房间 $i$ 或房间 $i + 1$ 进入连接它们的走廊,需要一把类型为 $C_i$ 的钥匙。

房间 $i$ 中有 $B_i$ 把钥匙,它们的类型分别为 $A_{i,j}$ ($1 \le j \le B_i$)。如果 JOI-kun 进入一个房间,他会捡起该房间内的所有钥匙。之后,他可以使用这些钥匙进入走廊。

JOI-kun 可以根据需要多次使用钥匙。有时他会得到多把相同类型的钥匙,但与只有一把该类型钥匙的情况相比,拥有多把相同类型的钥匙并没有特殊优势。

为了应对在宅邸中迷路的情况,JOI-kun 计划编写一个程序来回答以下查询: * 如果 JOI-kun 在没有任何钥匙的情况下进入房间 $x$,他能移动到房间 $y$ 吗?

你的任务是编写一个程序,代替 JOI-kun 回答上述查询。

输入格式

从标准输入读取以下数据: 第一行包含一个整数 $N$,表示宅邸中的房间数。 第二行包含 $N - 1$ 个空格分隔的整数 $C_1, C_2, \dots, C_{N-1}$。这意味着我们需要一把类型为 $C_i$ 的钥匙才能进入连接房间 $i$ 和房间 $i + 1$ 的走廊。 接下来的 $N$ 行中,第 $i$ 行 ($1 \le i \le N$) 包含一个正整数 $B_i$,以及 $B_i$ 个空格分隔的整数 $A_{i,1}, A_{i,2}, \dots, A_{i,B_i}$。这意味着房间 $i$ 中有 $B_i$ 把钥匙,它们的类型为 $A_{i,j}$ ($1 \le j \le B_i$)。 下一行包含一个整数 $Q$,表示查询的数量。 * 接下来的 $Q$ 行中,第 $k$ 行 ($1 \le k \le Q$) 包含两个空格分隔的整数 $X_k, Y_k$。这意味着第 $k$ 个查询询问 JOI-kun 在没有任何钥匙的情况下从房间 $X_k$ 出发,是否能移动到房间 $Y_k$。

输出格式

向标准输出写入 $Q$ 行。第 $k$ 行 ($1 \le k \le Q$) 包含 YES(如果他能从房间 $X_k$ 移动到房间 $Y_k$)或 NO(否则)。

数据范围

所有输入数据满足以下条件: $2 \le N \le 500\,000$ $1 \le Q \le 500\,000$ $1 \le B_1 + B_2 + \dots + B_N \le 500\,000$ $1 \le B_i \le N$ ($1 \le i \le N$) $1 \le C_i \le N$ ($1 \le i \le N - 1$) $1 \le A_{i,j} \le N$ ($1 \le i \le N, 1 \le j \le B_i$) $B_i$ 个整数 $A_{i,1}, \dots, A_{i,B_i}$ 互不相同 ($1 \le i \le N$) $1 \le X_k \le N$ ($1 \le k \le Q$) $1 \le Y_k \le N$ ($1 \le k \le Q$) $X_k \neq Y_k$ ($1 \le k \le Q$)

子任务

本题共有 4 个子任务。各子任务的分值及附加限制如下:

子任务 1 [5 分] $N \le 5\,000$ $Q \le 5\,000$ * $B_1 + B_2 + \dots + B_N \le 5\,000$

子任务 2 [5 分] $N \le 5\,000$ $B_1 + B_2 + \dots + B_N \le 5\,000$

子任务 3 [15 分] $N \le 100\,000$ $C_i \le 20$ ($1 \le i \le N - 1$) * $A_{i,j} \le 20$ ($1 \le i \le N, 1 \le j \le B_i$)

子任务 4 [75 分] * 无附加限制。

样例

样例输入 1

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

样例输出 1

YES
NO
NO
YES

说明

  • 在第一个查询中,如果 JOI-kun 按房间 2, 1, 2, 3, 4 的顺序访问,他可以到达房间 4。
  • 在第二个查询中,他只能访问房间 3 和 4。由于他只能获得类型为 1 和 3 的钥匙,他无法到达房间 2。
  • 在第三个查询中,他无法从房间 5 获得类型为 4 的钥匙以进入房间 4。因此他无法到达房间 5。
  • 在第四个查询中,如果他按房间 5, 4, 3 的顺序访问,他可以到达房间 3。

样例输入 2

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

样例输出 2

NO
YES
NO
YES

样例输入 3

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

样例输出 3

YES
NO
YES

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.