QOJ.ac

QOJ

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

#125. Wildschwein

Statistics

JOI-kun ist ein Wildschwein, das im IOI Forest lebt. Dort gibt es $N$ Futterstellen und $M$ Wege. Die Futterstellen sind von $1$ bis $N$ nummeriert. Der $i$-te Weg ($1\le i\le M$) verbindet die Futterstellen $A_i$ und $B_i$ in beiden Richtungen. JOI-kun benötigt in jeder Richtung $C_i$ Stunden, um diesen Weg zurückzulegen. Jede Futterstelle ist von jeder anderen über einen oder mehrere Wege erreichbar.

JOI-kun kann schlecht umkehren. Er kann nicht mitten auf einem Weg umkehren, um zu der Futterstelle zurückzukehren, von der er gekommen ist. Wenn er über einen Weg an einer Futterstelle ankommt, kann er außerdem nicht auf demselben Weg zu der Futterstelle zurückgehen, an der er unmittelbar zuvor war.

Jeden Tag bringt JOI-kun nach einem Versorgungsplan Futter zu den Futterstellen. Der Versorgungsplan eines Tages besteht aus einer Folge von $L$ Futterstellen $X_1,X_2,\ldots,X_L$. Er beginnt die Versorgung an der Futterstelle $X_1$, besucht die Futterstellen in dieser Reihenfolge und beendet die Versorgung an der Futterstelle $X_L$. Unterwegs darf er andere Futterstellen passieren. Eine Futterstelle kann im Versorgungsplan mehrfach vorkommen, aber für jedes $j$ ($1\le j\le L-1$) gilt $X_j\ne X_{j+1}$. Beachte, dass es Versorgungspläne geben kann, die er nicht ausführen kann.

Zu Beginn legt JOI-kun den anfänglichen Versorgungsplan $X_1,X_2,\ldots,X_L$ fest. Am Morgen des $k$-ten Tages ($1\le k\le T$) ändert er den $P_k$-ten Wert des Versorgungsplans in $Q_k$ (also wird $X_{P_k}$ zu $Q_k$). Anschließend verteilt er das Futter nach dem neuen Versorgungsplan. Es ist garantiert, dass auch nach der Änderung für jedes $j$ ($1\le j\le L-1$) die Bedingung $X_j\ne X_{j+1}$ gilt.

Für jeden Versorgungsplan der $T$ Tage möchte JOI-kun wissen, ob er ihn ausführen kann, und falls ja, wie viel Zeit er dafür mindestens benötigt.

Aufgabe

Schreibe ein Programm, das anhand der Daten des IOI Forest und der Versorgungspläne von JOI-kun für jeden Versorgungsplan der $T$ Tage bestimmt, ob er ihn ausführen kann, und falls ja, die dafür benötigte Mindestzeit ermittelt.

Eingabe

Lies die folgenden Daten von der Standardeingabe.

  • Die erste Zeile enthält vier durch Leerzeichen getrennte ganze Zahlen $N$, $M$, $T$ und $L$. Im IOI Forest gibt es $N$ Futterstellen und $M$ Wege, JOI-kun betrachtet Versorgungspläne für $T$ Tage, und der Versorgungsplan ist eine Folge der Länge $L$.
  • Die $i$-te der folgenden $M$ Zeilen ($1\le i\le M$) enthält drei durch Leerzeichen getrennte ganze Zahlen $A_i$, $B_i$ und $C_i$. Der $i$-te Weg verbindet die Futterstellen $A_i$ und $B_i$ in beiden Richtungen, und JOI-kun benötigt in jeder Richtung $C_i$ Stunden, um ihn zurückzulegen.
  • Die $j$-te der folgenden $L$ Zeilen ($1\le j\le L$) enthält eine ganze Zahl $X_j$. Der anfängliche Versorgungsplan ist $X_1,X_2,\ldots,X_L$.
  • Die $k$-te der folgenden $T$ Zeilen ($1\le k\le T$) enthält zwei durch Leerzeichen getrennte ganze Zahlen $P_k$ und $Q_k$. JOI-kun ändert am Morgen des $k$-ten Tages den $P_k$-ten Wert des Versorgungsplans in $Q_k$.

Ausgabe

Gib $T$ Zeilen auf der Standardausgabe aus. Die $k$-te Zeile ($1\le k\le T$) soll -1 enthalten, wenn er den Versorgungsplan des $k$-ten Tages nicht ausführen kann, andernfalls die dafür benötigte Mindestzeit in Stunden.

Beschränkungen

Alle Eingabedaten erfüllen die folgenden Bedingungen.

  • $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$).
  • Jede Futterstelle ist von jeder anderen über einen oder mehrere Wege erreichbar.
  • $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$).
  • Für jedes $j$ ($1\le j\le L-1$) gilt $X_j\ne X_{j+1}$. Auch nach jeder Änderung des Versorgungsplans gilt für jedes $j$ ($1\le j\le L-1$) die Bedingung $X_j\ne X_{j+1}$.

Teilaufgaben

Es gibt 4 Teilaufgaben. Die Punktzahlen und zusätzlichen Beschränkungen lauten wie folgt:

Teilaufgabe 1 [12 Punkte]

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

Teilaufgabe 2 [35 Punkte]

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

Teilaufgabe 3 [15 Punkte]

  • $T=1$.

Teilaufgabe 4 [38 Punkte]

Es gibt keine zusätzlichen Beschränkungen.

Beispiele

Eingabe 1

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

Ausgabe 1

3

Hinweis

Im ersten Beispiel ist der anfängliche Versorgungsplan $1,2,3$. JOI-kun ändert am Morgen des ersten Tages den dritten Wert dieses Versorgungsplans in $1$. Somit lautet der Versorgungsplan des ersten Tages $1,2,1$.

Zunächst verteilt JOI-kun Futter an Futterstelle $1$. Danach geht er über den ersten Weg von Futterstelle $1$ zu Futterstelle $2$ und verteilt dort Futter. Anschließend geht er über den zweiten Weg von Futterstelle $2$ zu Futterstelle $3$. Schließlich geht er über den dritten Weg von Futterstelle $3$ zu Futterstelle $1$ und verteilt dort Futter. So benötigt er 3 Stunden, um den Versorgungsplan auszuführen. Da dies die Mindestzeit ist, soll 3 ausgegeben werden.

Beachte, dass JOI-kun nicht die Folge von Futterstellen $1\to2\to1$ zurücklegen kann, da er nicht umkehren kann.

Eingabe 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

Ausgabe 2

5
2
3
-1

Hinweis

Im zweiten Beispiel lautet der Versorgungsplan des ersten Tages $4,1,4$. Zuerst verteilt JOI-kun Futter an Futterstelle $4$. Danach geht er über den vierten Weg von Futterstelle $4$ zu Futterstelle $1$ und verteilt dort Futter. Anschließend benutzt er den ersten, zweiten, dritten und vierten Weg in dieser Reihenfolge, um die Futterstellen $1\to2\to3\to1\to4$ zu durchlaufen, und verteilt Futter an Futterstelle $4$. Dies benötigt die geringstmögliche Zeit.

Der Versorgungsplan des vierten Tages lautet $2,4,2$. Da JOI-kun diesen Versorgungsplan nicht ausführen kann, soll -1 ausgegeben werden.

Eingabe 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

Ausgabe 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.