QOJ.ac

QOJ

Limite de temps : 10 s Limite de mémoire : 512 MB Points totaux : 100

#860. Приносим извинения за доставленные неудобства

Statistiques

Обучение в Ягеллонском университете в Кракове имеет свои плюсы и минусы. Плюсы: Ягеллонский университет. Минусы: Краков... Или, точнее, постоянная необходимость иметь дело с реконструкцией трамвайных путей.

Изначально сеть общественного транспорта состоит из некоторого количества трамвайных линий. Затем одна из них приостанавливается, потом другая, и так далее... Как вы, возможно, знаете, незыблемое правило в Кракове — всегда приостанавливать линию до того, как любая из ранее приостановленных линий возобновит свою работу. Прямо сейчас не все линии (пока что) приостановлены, и вы сидите в трамвае, раздраженный тем, что ваше прямое сообщение с университетом только что исчезло. Вы смотрите в окно и спрашиваете себя: «Действительно ли я самый невезучий пассажир в этом городе? Или есть кто-то еще, кому нужно делать пересадки еще большее количество раз, чтобы добраться туда, куда им нужно?»

Точнее, мы говорим, что остановка $B$ достижима из остановки $A$ с $c$ пересадками, если существуют линии $l_0, \dots, l_c$ такие, что $l_0$ обслуживает остановку $A$, $l_c$ обслуживает остановку $B$, и для каждого $0 \le i < c$ существует некоторая остановка, обслуживаемая как $l_i$, так и $l_{i+1}$. В каждый момент времени вы хотите узнать наибольшее значение $c$, такое что существует пара остановок $(A, B)$, где $B$ достижима из $A$ с $c$ пересадками, и $B$ не достижима из $A$ с $c'$ пересадками для любого $c' < c$.

Заметим, что иногда добраться между парой остановок вообще невозможно. Как следует из определения выше, вы решили не принимать такие пары во внимание в своем анализе — вы заключаете, что если кто-то хочет проехать между такими остановками, он в любом случае воспользуется Uber.

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

Первая строка входных данных содержит количество тестов $z$ ($1 \le z \le 35$). Далее следуют описания тестов.

Первая строка каждого теста содержит количество остановок $n$ и количество трамвайных линий $k$ ($2 \le n, k \le 750$). Остановки пронумерованы от $1$ до $n$, а линии — от $1$ до $k$.

Затем следуют $k$ строк. $i$-я из этих строк описывает маршрут трамвайной линии номер $i$. Каждая строка начинается с целого числа $r_i$ ($2 \le r_i \le n$), за которым следуют $r_i$ различных целых чисел $a_{i,j}$ ($1 \le a_{i,j} \le n$) — идентификаторы остановок, обслуживаемых $i$-й трамвайной линией. Любая трамвайная линия работает в обоих направлениях.

Следующая строка содержит единственное целое число $s$ ($1 \le s \le k - 1$).

Затем следуют $s$ строк, описывающих порядок, в котором трамвайные линии приостанавливаются. Каждая из этих строк содержит единственное целое число $s_i$ ($1 \le s_i \le k$) — идентификатор приостанавливаемой трамвайной линии. Каждая линия может быть приостановлена не более одного раза.

Сумма значений $n$ и $k$ во всех тестах не превышает $1000$ для каждого.

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

Для каждого теста выведите $s + 1$ строк, каждая из которых содержит одно целое число. $(i+1)$-я строка должна обозначать наибольшее количество пересадок, необходимых после $i$-го события приостановки (первая строка обозначает ответ до каких-либо приостановок).

Примеры

Пример 1

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

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

1
2
0
0

Примечание

Изначально требуется одна пересадка, чтобы добраться, например, от остановки $4$ до остановки $5$ (или наоборот). Такая поездка возможна с использованием линии $2$, а затем линии $1$. Нет пар остановок, требующих $2$ или более пересадок.

После того как линия $1$ удалена, требуются две пересадки, чтобы добраться от остановки $1$ до остановки $3$ (или наоборот).

Когда линии $1$ и $4$ удалены, единственными парами остановок, которые все еще достижимы друг из друга, являются $(1, 4)$ и $(2, 3)$, и в обоих случаях для проезда между ними не требуется пересадок.

Когда линии $1, 4$ и $3$ удалены, единственной парой остановок, которые все еще достижимы друг из друга, является $(1, 4)$. Для проезда между этими остановками пересадки не требуются.

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.