QOJ.ac

QOJ

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

#367. Довгий особняк

الإحصائيات

Поблизу будинку 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$) має містити 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

Примітка

  • У першому запиті, відвідавши кімнати $2,1,2,3,4$ у такому порядку, JOI-kun дістанеться кімнати $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.