QOJ.ac

QOJ

Time Limit: 1.5 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#14720. Мережа 77G

Statistics

Карту Мяуленду можна розглядати як кореневе дерево з $n$ вершинами та $n - 1$ ребрами, де вершини представляють міста, а ребро представляє дорогу, що з'єднує два міста. Столиця знаходиться в корені — вершині $1$.

Тепер Мяуленд хоче встановити в деяких містах новітні базові станції мережі 77G. Щоб забезпечити достатню якість зв'язку на кожній дорозі, принаймні в одному з міст на кінцях кожної дороги має бути встановлена базова станція. Однак через невідомі технічні проблеми в мережевій системі є $m$ несправностей. Несправність $i$ описується так: якщо в місті $x_i$ встановлено базову станцію, то в усіх містах у піддереві $x_i$, відстань від яких до $x_i$ точно дорівнює $y_i$, не можна встановлювати базові станції; інакше станції заважатимуть одна одній і стануть непридатними для використання.

Будь ласка, допоможіть Мяуленду вибрати декілька міст так, щоб встановлення базових станцій у цих містах задовольняло всі наведені вище вимоги. Якщо допустимої схеми не існує, виведіть No.

Вхідні дані

Кожен тестовий файл містить декілька наборів вхідних даних. Перший рядок містить кількість наборів вхідних даних $T$ ($1 \le T \le 10^3$). Далі йде опис наборів вхідних даних.

Перший рядок кожного набору вхідних даних містить ціле число $n$ ($2 \le n \le 2 \times 10^5$), що позначає кількість міст.

Другий рядок містить $n - 1$ цілих чисел $f_2, f_3, \dots, f_n$ ($1 \le f_i < i$), де $f_i$ позначає предка міста $i$.

Третій рядок містить ціле число $m$ ($0 \le m \le 2 \times 10^5$), що позначає кількість несправностей.

Кожен із наступних $m$ рядків містить два цілі числа $x_i$ та $y_i$ ($1 \le x_i, y_i \le n$), що позначають $i$-ту несправність. Можуть існувати дві однакові несправності.

Для кожного тестового файлу гарантується, що сума $n$ за всіма наборами вхідних даних не перевищує $2 \times 10^5$, а сума $m$ за всіма наборами вхідних даних не перевищує $2 \times 10^5$.

Вихідні дані

Для кожного набору вхідних даних, якщо допустимої схеми немає, виведіть рядок No.

Інакше виведіть три рядки, що описують вашу схему:

  • У першому рядку виведіть Yes.
  • У другому рядку виведіть ціле число $c$, що позначає кількість вибраних вами міст.
  • У третьому рядку виведіть $c$ різних цілих чисел, що позначають вибрані вами міста.

Якщо допустимих схем декілька, ви можете вивести будь-яку з них. Під час виведення схеми ви можете вказувати $c$ міст у будь-якому порядку.

Приклад

Приклад вхідних даних 1

3
6
1 1 2 2 4
2
1 3
2 1
6
1 1 2 2 4
6
1 1
1 2
1 3
2 1
2 2
2 1
8
1 1 3 1 1 2 4
10
1 2
3 2
1 3
5 1
6 1
3 2
4 1
3 2
5 1
3 1

Приклад вихідних даних 1

Yes
4
5 3 4 1
No
No

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.