AT_joisc2017_h 細長い屋敷 (Long Mansion)
题目描述
#「JOISC 2017 Day 3」幽深府邸
**题目译自 [JOISC 2017](https://www.ioi-jp.org/camp/2017/2017-sp-tasks/index.html) Day3 T2「[細長い屋敷](https://www.ioi-jp.org/camp/2017/2017-sp-tasks/2017-sp-d3.pdf)([Long Mansion](https://www.ioi-jp.org/camp/2017/2017-sp-tasks/2017-sp-d3-en.pdf))」**
$N$ 个房间排列在一条直线上,依次编号为 $1, 2, \ldots, N$。只有编号相邻的房间才相连。相连的房间之间有上锁的门。
从房间 $i$ 进入房间 $i+1$,或者从房间 $i+1$ 进入房间 $i$,需要类型为 $C_i$ 的钥匙 $(1\le i\le N-1)$。
进入房间 $i$ 可以捡起房间里的所有钥匙。房间 $i$ 有 $B_i$ 把钥匙,类型分别为 $A[i][1]\dots A[i][B_i]$ 保证对于同一个 $i$,没有两个 $A[i][j]$ 相同。钥匙可以重复使用。你可能会获得相同的钥匙,然并卵。
现在有 $Q$ 组查询,每组查询用两个整数 $x, y$ 来描述 $(x≠y)$,表示:如果有人被丢进房间 $x$,手上没有任何钥匙,此人能否到达房间 $y$(当然,此人可以捡房间 $x$ 里的钥匙)。
对于每组查询,如果此人能到达,输出 $\texttt{YES}$,否则输出 $\texttt{NO}$ 。
输入格式
第一行有一个整数 $N$。
第二行有 $N-1$ 个整数 $C_1, C_2, \dots, C_{N-1}$,用空格分隔。
在接下来的 $N$ 行中,第 $i$ 行 $(1\le i\le N)$ 的开头有一个整数 $B_i$,后面有 $B_i$ 个整数 $A[i][1]\dots A[i][B_i]$,这 $B_i+1$ 个整数用空格分隔。
第 $N+2$ 行有一个整数 $Q$。
在接下来的 $Q$ 行中,第 $k$ 行 $(1\le k\le Q)$ 有两个整数 $X_k, Y_k$,表示一组查询。
输出格式
输出共 $Q$ 行,每行一个字符串 $\texttt{YES}$ 或 $\texttt{NO}$ ,表示此人能否到达房间 $y$。
## 样例
#### 样例输入 1
```plain
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
```plain
YES
NO
NO
YES
```
#### 样例解释 1
查询 1:可行,此人应依次到 $2, 1, 2, 3, 4$ 号房间搜刮钥匙。
查询 2:不可行,此人只能到达 $3,4$ 号房间,只能拿到 $1,3$ 号钥匙。
查询 3:不可行,此人无法拿到 $4$ 号钥匙。
查询 4:可行,此人应依次到 $5, 4, 3$ 号房间搜刮钥匙。
#### 样例输入 2
```plain
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
```plain
NO
YES
NO
YES
```
#### 样例输入 3
```plain
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
```plain
YES
NO
YES
```
说明/提示
对于所有数据,$2\le N\le 5\times 10^5,$ $1\le Q\le 5\times 10^5,$ $1\le \sum B_i \le 5\times 10^5,$ $1\le B_i, C_i, A[i][j], X_k, Y_k\le N,$ $X_k≠Y_k$。
|子任务 #|分值|$N$|$Q$|$\sum B_i$|$C_i, A[i][j]$|
|-|-|-|-|-|-|
|1|5|$N\le 5000$|$Q\le 5000$|$\sum B_i \le 5000$|.|
|2|5|$N\le 5000$|.|$\sum B_i \le 5000$|.|
|3|15|$N\le 10^5$|.|.|$C_i, A[i][j]\le 20$|
|4|75|.|.|.|.|
感谢 Planet6174 提供的翻译