日野動物園特有的鹿鹿大遊行
由於日野動物園腹地廣大,園方正考慮將「鹿鹿大遊行」作為一種交通方式,讓旅客搭乘鹿在園區內不同的區域之間移動。
日野動物園內一共有 $N$ 個不同的區域,區域以 $1$ 到 $N$ 的整數編號,其中第 $1$ 個區域為園區入口,而第 $N$ 個區域是最熱門的區域——鹿園。日野動物園每天一共有 $M$ 場鹿鹿大遊行,園方將每天的營業時間分成 $10 ^ 9$ 等分,開園時為時間 $1$,閉園時為時間 $10 ^ 9$。第 $i$ 場的鹿鹿大遊行將在時間 $s_i$ 從區域 $u_i$ 開始,並在時間 $t_i$ 抵達區域 $v_i$。
由於大部分的旅客在進入園區後都直接前往鹿園,因此日野動物園評估路線的方式為:開園時從園區入口開始,搭乘鹿鹿大遊行最快能在哪個時間點抵達鹿園。旅客只能透過鹿鹿大遊行移動,在沒有搭乘鹿鹿大遊行時必須停在原本所在的區域。如果要搭乘鹿鹿大遊行,旅客必須在鹿鹿大遊行開始的時間點或開始之前抵達該區域。
最近園方打算更動鹿鹿大遊行的行程,他們列出了 $Q$ 個更改的方式。每一個方式可能是以下的其中一種:
日野動物園想知道,鹿鹿大遊行的行程在分別經過這些修改的方式後,開園時透過鹿鹿大遊行從園區入口到鹿園需要花多少時間。注意 $Q$ 個更改的方式之間是沒有關聯的,也就是說,園方想知道的是,對於每一個更改的方式,用原本的行程進行該更改後,最快能抵達鹿園的時間。你能寫一支程式幫助日野動物園嗎?
輸入的第一行包含兩個整數 $N,M$。接下來 $M$ 行,每行包含四個整數 $u_i, v_i, s_i, t_i$,表示第 $i$ 場鹿鹿大遊行的資訊。下一行為一個整數 $Q$。接下來 $Q$ 行,每行表示一個更改鹿鹿大遊行的行程的方式,請參考 Description 中的說明。
對於每一個更改鹿鹿大遊行的行程的方式,如果修改後無法抵達鹿園,請輸出 -1
;否則,請輸出一行包含一整數,表示在開園後最快能抵達鹿園的時間。
第一筆範例測資中,每個更改方式及其說明分別如下:
-1
。改編自 2024 台清交程式競賽 pG - Nathan's Adventure
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~2 | 範例測資 | 0 |
2 | 0~17 | $N \le 2000, M \le 2000, Q \le 2000$ | 10 |
3 | 18~29 | 對於每個更改後的所有鹿鹿大遊行(包含修改時間或新增的),皆滿足開始時間 s 與抵達時間 t 相同;且更改後所有鹿鹿大遊行之中,任兩個相異的鹿鹿大遊行的開始時間皆不相同 | 30 |
4 | 0~38 | 無額外限制 | 60 |