QOJ.ac

QOJ

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

#125. Javali

Statistics

JOI-kun é um javali que vive na IOI Forest, onde há $N$ postos de alimentação e $M$ estradas. Os postos são numerados de $1$ a $N$. A estrada $i$ ($1 \le i \le M$) liga os postos $A_i$ e $B_i$ nos dois sentidos, e JOI-kun demora $C_i$ horas a percorrê-la em qualquer sentido. É possível ir de qualquer posto a qualquer outro usando uma ou mais estradas.

JOI-kun tem dificuldade em fazer inversão de marcha. Não pode inverter a marcha a meio de uma estrada para regressar ao posto onde estava. Além disso, ao chegar a um posto por uma estrada, não pode percorrer essa mesma estrada para regressar ao posto onde estava imediatamente antes.

Todos os dias, JOI-kun abastece os postos com alimentos de acordo com um plano de abastecimento. O plano de um dia consiste numa sequência de $L$ postos $X_1,X_2,\ldots,X_L$. Ele começa a abastecer no posto $X_1$, visita os postos nesta ordem e termina o abastecimento no posto $X_L$. Pode passar por outros postos pelo caminho. É possível que tenha de abastecer o mesmo posto várias vezes, mas $X_j \ne X_{j+1}$ para cada $j$ ($1 \le j \le L-1$). Note que pode existir um plano que ele não consiga executar.

Inicialmente, JOI-kun determina o plano de abastecimento inicial $X_1,X_2,\ldots,X_L$. Na manhã do dia $k$ ($1 \le k \le T$), substitui o valor na posição $P_k$ do plano por $Q_k$ (isto é, $X_{P_k}$ passa a ser $Q_k$) e depois abastece os postos de acordo com o novo plano. É garantido que $X_j \ne X_{j+1}$ para cada $j$ ($1 \le j \le L-1$) após a alteração.

Para cada plano dos $T$ dias, JOI-kun quer determinar se consegue executá-lo e, em caso afirmativo, encontrar o tempo mínimo possível para abastecer os postos de acordo com esse plano.

Tarefa

Dados os dados da IOI Forest e os planos de abastecimento de JOI-kun, escreva um programa que, para cada plano dos $T$ dias, determine se ele consegue executá-lo e, em caso afirmativo, encontre o tempo mínimo possível para abastecer os postos de acordo com esse plano.

Entrada

Leia os seguintes dados da entrada padrão.

  • A primeira linha contém quatro inteiros $N$, $M$, $T$ e $L$, separados por espaços. Isto significa que há $N$ postos e $M$ estradas na IOI Forest, que JOI-kun considera planos para $T$ dias e que o plano consiste numa sequência de comprimento $L$.
  • A linha $i$ ($1 \le i \le M$) das $M$ linhas seguintes contém três inteiros $A_i$, $B_i$ e $C_i$, separados por espaços. Isto significa que a estrada $i$ liga os postos $A_i$ e $B_i$ nos dois sentidos e que JOI-kun demora $C_i$ horas a percorrê-la em qualquer sentido.
  • A linha $j$ ($1 \le j \le L$) das $L$ linhas seguintes contém um inteiro $X_j$. Isto significa que o plano inicial é $X_1,X_2,\ldots,X_L$.
  • A linha $k$ ($1 \le k \le T$) das $T$ linhas seguintes contém dois inteiros $P_k$ e $Q_k$, separados por um espaço. Isto significa que JOI-kun substituirá o valor na posição $P_k$ do plano por $Q_k$ na manhã do dia $k$.

Saída

Escreva $T$ linhas na saída padrão. A linha $k$ ($1 \le k \le T$) deve conter $-1$ se ele não conseguir executar o plano do dia $k$, ou o tempo mínimo possível, em horas, para o executar, caso consiga.

Restrições

Todos os dados de entrada satisfazem as seguintes condições.

  • $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$).
  • É possível ir de qualquer posto a qualquer outro usando uma ou mais estradas.
  • $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$).
  • $X_j \ne X_{j+1}$ para cada $j$ ($1 \le j \le L-1$). Após cada alteração do plano, também se verifica $X_j \ne X_{j+1}$ para cada $j$ ($1 \le j \le L-1$).

Subtarefas

Há 4 subtarefas. A pontuação e as restrições adicionais de cada uma são as seguintes:

Subtarefa 1 [12 pontos]

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

Subtarefa 2 [35 pontos]

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

Subtarefa 3 [15 pontos]

  • $T=1$.

Subtarefa 4 [38 pontos]

Não há restrições adicionais.

Exemplos

Entrada 1

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

Saída 1

3

Explicação

No exemplo de entrada 1, o plano inicial é $1,2,3$. JOI-kun substitui o terceiro valor deste plano por $1$ na manhã do primeiro dia. Portanto, o plano do primeiro dia é $1,2,1$.

Primeiro, JOI-kun abastece o posto $1$. Depois, usa a estrada $1$ para ir do posto $1$ ao posto $2$ e abastece o posto $2$. Em seguida, usa a estrada $2$ para ir do posto $2$ ao posto $3$. Por fim, usa a estrada $3$ para ir do posto $3$ ao posto $1$ e abastece o posto $1$. Assim, demora $3$ horas a executar o plano. Como este é o tempo mínimo possível, a saída é $3$.

Note que JOI-kun não pode percorrer os postos $1\to2\to1$, pois não pode inverter a marcha.

Entrada 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

Saída 2

5
2
3
-1

Explicação

No exemplo de entrada 2, o plano do primeiro dia é $4,1,4$. Primeiro, JOI-kun abastece o posto $4$. Depois, usa a estrada $4$ para ir do posto $4$ ao posto $1$ e abastece o posto $1$. Em seguida, usa as estradas $1$, $2$, $3$ e $4$, nesta ordem, para percorrer os postos $1\to2\to3\to1\to4$ e abastece o posto $4$. Isto demora o tempo mínimo possível.

O plano do quarto dia é $2,4,2$. Como JOI-kun não consegue executar este plano, a saída é $-1$.

Entrada 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

Saída 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.