QOJ.ac

QOJ

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

#367. Длинный особняк

Statistics

Рядом с домом JOI-kun находится просторный особняк. В нём $N$ комнат, расположенных в ряд с востока на запад. $i$-я комната, считая от самой восточной, называется комнатой $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,\ldots,C_{N-1}$, разделённых пробелами. Это означает, что для входа в коридор, соединяющий комнаты $i$ и $i+1$, нужен ключ типа $C_i$.
  • $i$-я строка ($1 \le i \le N$) следующих $N$ строк содержит положительное целое число $B_i$ и $B_i$ целых чисел $A_{i,1},A_{i,2},\ldots,A_{i,B_i}$, разделённых пробелами. Это означает, что в комнате $i$ находится $B_i$ ключей, типы которых — $A_{i,j}$ ($1 \le j \le B_i$).
  • Следующая строка содержит целое число $Q$ — число запросов.
  • $k$-я строка ($1 \le k \le Q$) следующих $Q$ строк содержит два целых числа $X_k,Y_k$, разделённых пробелом. Это означает, что $k$-й запрос спрашивает, сможет ли JOI-kun добраться из комнаты $X_k$ до комнаты $Y_k$, предполагая, что изначально он находится в комнате $X_k$ без единого ключа.

Выходные данные

Выведите $Q$ строк в стандартный вывод. $k$-я строка ($1 \le k \le Q$) из этих $Q$ строк содержит YES, если он может добраться из комнаты $X_k$ до комнаты $Y_k$, предполагая, что изначально он находится в комнате $X_k$ без единого ключа. В противном случае она содержит NO.

Ограничения

Все входные данные удовлетворяют следующим условиям.

  • $2 \le N \le 500\,000$.
  • $1 \le Q \le 500\,000$.
  • $1 \le B_1+B_2+\cdots+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},\ldots,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 \ne Y_k$ ($1 \le k \le Q$).

Подзадачи

Всего в этой задаче 4 подзадачи. Баллы и дополнительные ограничения каждой подзадачи приведены ниже.

Подзадача 1 [5 баллов]

  • $N \le 5\,000$.
  • $Q \le 5\,000$.
  • $B_1+B_2+\cdots+B_N \le 5\,000$.

Подзадача 2 [5 баллов]

  • $N \le 5\,000$.
  • $B_1+B_2+\cdots+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$.
  • В третьем запросе он не может получить ключ типа $4$ из комнаты $5$ в комнату $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.