QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 1024 MB Total points: 100

#125. Дикий кабан

Statistics

JOI-kun — дикий кабан, живущий в IOI Forest, где есть $N$ кормовых пунктов и $M$ дорог. Кормовые пункты пронумерованы от $1$ до $N$. Дорога $i$ ($1 \le i \le M$) соединяет кормовые пункты $A_i$ и $B_i$ в обоих направлениях; прохождение этой дороги в любом направлении занимает у JOI-kun $C_i$ часов. Из любого кормового пункта можно добраться до любого другого по одной или нескольким дорогам.

JOI-kun плохо умеет разворачиваться. Он не может развернуться посреди дороги, чтобы вернуться в кормовой пункт, из которого пришёл. Более того, прибыв в кормовой пункт по какой-либо дороге, он не может пойти обратно по этой же дороге в кормовой пункт, где только что находился.

Каждый день JOI-kun доставляет корм в кормовые пункты согласно плану доставки. План доставки на день состоит из последовательности $L$ кормовых пунктов $X_1, X_2, \ldots, X_L$. Он начинает доставку в кормовом пункте $X_1$, посещает кормовые пункты в указанном порядке и заканчивает доставку в кормовом пункте $X_L$. По пути ему разрешается проходить через другие кормовые пункты. Возможно, что ему нужно доставить корм в один пункт несколько раз, но для каждого $j$ ($1 \le j \le L-1$) выполняется $X_j \ne X_{j+1}$. Обратите внимание: могут существовать планы доставки, которые он не может выполнить.

Сначала JOI-kun определяет исходный план доставки $X_1, X_2, \ldots, X_L$. Утром дня $k$ ($1 \le k \le T$) он заменяет значение на позиции $P_k$ в плане доставки на $Q_k$ (то есть $X_{P_k}$ становится равным $Q_k$), а затем доставляет корм согласно новому плану. Гарантируется, что после изменения для каждого $j$ ($1 \le j \le L-1$) выполняется $X_j \ne X_{j+1}$.

Для каждого плана доставки за $T$ дней JOI-kun хочет определить, сможет ли он его выполнить, и, если сможет, найти минимальное время, необходимое для доставки корма по этому плану.

Задание

Даны сведения об IOI Forest и планах доставки JOI-kun. Напишите программу, которая для каждого плана доставки за $T$ дней определяет, сможет ли он его выполнить, и, если сможет, находит минимальное время, необходимое для доставки корма по этому плану.

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

Прочитайте следующие данные из стандартного ввода.

  • Первая строка содержит четыре целых числа $N$, $M$, $T$ и $L$, разделённые пробелами. Это означает, что в IOI Forest есть $N$ кормовых пунктов и $M$ дорог, JOI-kun рассматривает планы доставки на $T$ дней, а план доставки представляет собой последовательность длины $L$.
  • Строка $i$ ($1 \le i \le M$) из следующих $M$ строк содержит три целых числа $A_i$, $B_i$ и $C_i$, разделённые пробелами. Это означает, что дорога $i$ соединяет кормовые пункты $A_i$ и $B_i$ в обоих направлениях, а прохождение этой дороги в любом направлении занимает у JOI-kun $C_i$ часов.
  • Строка $j$ ($1 \le j \le L$) из следующих $L$ строк содержит целое число $X_j$. Это означает, что исходный план доставки имеет вид $X_1, X_2, \ldots, X_L$.
  • Строка $k$ ($1 \le k \le T$) из следующих $T$ строк содержит два целых числа $P_k$ и $Q_k$, разделённые пробелами. Это означает, что утром дня $k$ JOI-kun заменит значение на позиции $P_k$ в плане доставки на $Q_k$.

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

Выведите $T$ строк в стандартный вывод. Строка $k$ ($1 \le k \le T$) должна содержать -1, если JOI-kun не может выполнить план доставки в день $k$, или минимальное время его выполнения в часах, если может.

Ограничения

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

  • $2 \le N \le 2\,000$.
  • $N-1 \le M \le 2\,000$.
  • $1 \le T \le 100\,000$.
  • $2 \le L \le 100\,000$.
  • $1 \le A_i < B_i \le N$ ($1 \le i \le M$).
  • $(A_i,B_i) \ne (A_j,B_j)$ ($1 \le i < j \le M$).
  • Из любого кормового пункта можно добраться до любого другого по одной или нескольким дорогам.
  • $1 \le C_i \le 1\,000\,000\,000$ ($1 \le i \le M$).
  • $1 \le X_j \le N$ ($1 \le j \le L$).
  • $1 \le P_k \le L$ ($1 \le k \le T$).
  • $1 \le Q_k \le N$ ($1 \le k \le T$).
  • Для каждого $j$ ($1 \le j \le L-1$) выполняется $X_j \ne X_{j+1}$. Также после каждого изменения плана доставки для каждого $j$ ($1 \le j \le L-1$) выполняется $X_j \ne X_{j+1}$.

Подзадачи

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

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

  • $N \le 10$.
  • $M \le 10$.
  • $T = 1$.
  • $L \le 10$.
  • $C_i \le 10$ ($1 \le i \le M$).

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

  • $N \le 500$.
  • $M \le 500$.
  • $T = 1$.

Подзадача 3 [15 баллов]

  • $T = 1$.

Подзадача 4 [38 баллов]

Дополнительных ограничений нет.

Примеры

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

3 3 1 3
1 2 1
2 3 1
1 3 1
1
2
3
3 1

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

3

Примечание

В первом примере исходный план доставки — $1,2,3$. Утром первого дня JOI-kun заменяет третье значение в этом плане на $1$. Поэтому план доставки на первый день — $1,2,1$.

Сначала JOI-kun доставит корм в кормовой пункт $1$. Затем он пройдёт по первой дороге из кормового пункта $1$ в кормовой пункт $2$ и доставит туда корм. После этого он пройдёт по второй дороге из кормового пункта $2$ в кормовой пункт $3$. Наконец, он пройдёт по третьей дороге из кормового пункта $3$ в кормовой пункт $1$ и доставит туда корм. Таким образом, выполнение плана займёт $3$ часа. Поскольку это минимальное возможное время, выведите $3$.

Обратите внимание: JOI-kun не может пройти по кормовым пунктам $1 \to 2 \to 1$, поскольку он не может разворачиваться.

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

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

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

5
2
3
-1

Примечание

Во втором примере план доставки на первый день — $4,1,4$. Сначала JOI-kun доставит корм в кормовой пункт $4$. Затем он пройдёт по четвёртой дороге из кормового пункта $4$ в кормовой пункт $1$ и доставит туда корм. После этого он пройдёт по первой, второй, третьей и четвёртой дорогам именно в таком порядке, посетив кормовые пункты $1 \to 2 \to 3 \to 1 \to 4$, и доставит корм в кормовой пункт $4$. Это занимает минимальное возможное время.

План доставки на четвёртый день — $2,4,2$. Поскольку JOI-kun не может выполнить этот план, выведите -1.

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

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

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

38

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.