QOJ.ac

QOJ

Limite de temps : 4 s Limite de mémoire : 1024 MB Points totaux : 100

#23947. Opłaty drogowe (Highway Tolls)

Statistiques

Treść zadania

Królestwo JOI to królestwo składające się z $N$ miast, ponumerowanych od $1$ do $N$. W Królestwie JOI znajduje się $M$ jednokierunkowych autostrad łączących te miasta, ponumerowanych od $1$ do $M$. Jadąc autostradą $i$ ($1 \le i \le M$), można przemieścić się z miasta $A_i$ do miasta $B_i$, a czas potrzebny na jej pokonanie wynosi $L_i$.

Za każdym razem, gdy przejeżdża się autostradą, naliczana jest opłata drogowa. Opłata za autostradę $i$ w najtańszym momencie wynosi $C_i$, ale ponieważ wszyscy pracownicy w Królestwie JOI nie cierpią pracy w godzinach nadliczbowych, im dalej od pewnego czasu odniesienia $0$, tym wyższa staje się opłata. Dokładniej, jeśli wyruszy się z miasta $A_i$ w chwili $t$ i przejedzie autostradą $i$, opłata drogowa wyraża się za pomocą stałej $K$ jako $C_i + K \times |t|$, gdzie $|t|$ oznacza wartość bezwzględną liczby $t$.

Mieszkając w mieście $1$, planujesz podróż do miasta $N$, w którym mieszka twój przyjaciel. Ponieważ chcesz dostać się z miasta $1$ do miasta $N$ korzystając z autostrad, najpierw chcesz sprawdzić, czy jest to możliwe, a jeśli tak, chcesz również wyznaczyć minimalną możliwą sumę opłat drogowych. Możesz przy tym dowolnie wybrać trasę podróży oraz momenty wyjazdu z poszczególnych miast. W szczególności możesz wyruszyć z miasta $1$ w ujemnej chwili czasu lub spędzić pewien czas pozostając w jakimś mieście bez przejeżdżania żadną autostradą.

Mając dane informacje o autostradach oraz stałą $K$, napisz program, który rozstrzygnie, czy można przemieścić się z miasta $1$ do miasta $N$ korzystając z autostrad, a jeśli jest to możliwe, wyznaczy minimalną wartość sumy opłat drogowych.

Przy ograniczeniach tego zadania można udowodnić, że jeśli da się przemieścić z miasta $1$ do miasta $N$ korzystając z autostrad, to minimalna wartość sumy opłat drogowych jest zawsze liczbą całkowitą.

Ograniczenia

  • $2 \le N \le 4\,000$.
  • $1 \le M \le 8\,000$.
  • $0 \le K \le 100\,000$.
  • $1 \le A_i \le N$ ($1 \le i \le M$).
  • $1 \le B_i \le N$ ($1 \le i \le M$).
  • $A_i \neq B_i$ ($1 \le i \le M$).
  • $1 \le L_i \le 1\,000\,000$ ($1 \le i \le M$).
  • $0 \le C_i \le 10^9$ ($1 \le i \le M$).
  • Wszystkie wartości wejściowe są liczbami całkowitymi.

Podzadania

  1. ($9$ punktów) $N \le 100$, $M \le 200$, $K = 0$.
  2. ($21$ punktów) $N \le 100$, $M \le 200$, $L_i \le 20$ ($1 \le i \le M$).
  3. ($13$ punktów) $N \le 100$, $M = N - 1$, $A_i = i$, $B_i = i + 1$ ($1 \le i \le M$).
  4. ($23$ punkty) $N \le 100$, $M \le 200$ oraz spełniony jest następujący warunek:
    • $N$ jest parzyste oraz $\lfloor B_i / 2 \rfloor - \lfloor A_i / 2 \rfloor = 1$ ($1 \le i \le M$), gdzie $\lfloor x \rfloor$ oznacza największą liczbę całkowitą nie większą niż $x$.
  5. ($16$ punktów) $N \le 100$, $M \le 200$.
  6. ($11$ punktów) $N \le 1\,500$, $M \le 3\,000$.
  7. ($7$ punktów) Brak dodatkowych ograniczeń.

Wejście

Wejście podane jest w następującym formacie:

N M K
A_1 B_1 L_1 C_1
A_2 B_2 L_2 C_2
:
A_M B_M L_M C_M

Wyjście

Jeśli przemieszczenie się z miasta $1$ do miasta $N$ za pomocą autostrad jest niemożliwe, wypisz -1. Jeśli jest to możliwe, wypisz w $1$ wierszu liczbę całkowitą oznaczającą minimalną wartość sumy opłat drogowych.

Przykład 1

4 4 2
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
15

Miasta i drogi Królestwa JOI przedstawiono na poniższym rysunku. Koła oznaczają miasta, strzałki oznaczają drogi, a obok każdej drogi zapisano kolejno wartości $L_i$ oraz $C_i$ dla tej drogi. Liczba wpisana wewnątrz każdego koła oznacza numer danego miasta.

problem_23947_1be471b578508932fc741bdecdff46c1.png

Podróżując w następujący sposób, łączna opłata drogowa wyniesie $15$:

  • Chwila $-1$: Wyrusz z miasta $1$ i udaj się do miasta $3$. Koszt opłaty drogowej wynosi $10 + 2 \times |-1| = 12$.
  • Chwila $0$: Dotrzyj do miasta $3$ i natychmiast udaj się do miasta $4$. Koszt opłaty drogowej wynosi $3 + 2 \times |0| = 3$.
  • Chwila $5$: Dotrzyj do miasta $4$.

Ponieważ nie istnieje sposób podróży o łącznej opłacie drogowej mniejszej niż $15$, należy wypisać $15$.

Ten przykład wejściowy spełnia ograniczenia podzadań $2, 5, 6, 7$.

Przykład 2

4 4 0
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
9

Różni się od Przykładu $1$ jedynie wartością $K$.

Podróżując w następujący sposób, łączna opłata drogowa wyniesie $9$:

  • Chwila $-3$: Wyrusz z miasta $1$ i udaj się do miasta $2$. Koszt opłaty drogowej wynosi $2 + 0 \times |-3| = 2$.
  • Chwila $0$: Dotrzyj do miasta $2$ i natychmiast udaj się do miasta $3$. Koszt opłaty drogowej wynosi $4 + 0 \times |0| = 4$.
  • Chwila $1$: Dotrzyj do miasta $3$ i pozostań w mieście $3$.
  • Chwila $3$: Wyrusz z miasta $3$ i udaj się do miasta $4$. Koszt opłaty drogowej wynosi $3 + 0 \times |3| = 3$.
  • Chwila $8$: Dotrzyj do miasta $4$.

Ponieważ nie istnieje sposób podróży o łącznej opłacie drogowej mniejszej niż $9$, należy wypisać $9$.

Ten przykład wejściowy spełnia ograniczenia podzadań $1, 2, 5, 6, 7$.

Przykład 3

2 1 10
2 1 4 7
-1

Ponieważ nie da się przemieścić z miasta $1$ do miasta $2$ korzystając z autostrad, należy wypisać -1.

Ten przykład wejściowy spełnia ograniczenia podzadań $2, 5, 6, 7$.

Przykład 4

4 3 5
1 2 3 1
2 3 1 10
3 4 7 6
37

Ten przykład wejściowy spełnia ograniczenia podzadań $2, 3, 5, 6, 7$.

Przykład 5

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

Może istnieć wiele dróg mających tę samą parę $(A_i, B_i)$.

Ten przykład wejściowy spełnia ograniczenia podzadań $2, 4, 5, 6, 7$.

Przykład 6

6 10 100000
4 2 212037 752027141
2 5 667097 1571491
2 1 769275 576006950
1 2 711969 526189398
5 3 733555 206320177
3 4 364807 802102091
1 4 467240 183184247
3 5 44994 15991843
5 3 613192 782356546
4 6 832593 639529758
47546714005

Ten przykład wejściowy spełnia ograniczenia podzadań $5, 6, 7$.

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.