AT_joig2022_f タクシー 2 (Taxis 2)

Description

[problemUrl]: https://atcoder.jp/contests/joig2022-open/tasks/joig2022_f IOI 国には,$ 1 $ から $ N $ までの番号が付けられた $ N $ 個の町と,$ 1 $ から $ M $ までの番号が付けられた $ M $ 本の道がある. それぞれの道は,タクシーでのみ通行可能である.道 $ i $ ($ 1\ \leqq\ i\ \leqq\ M $) のタクシーは町 $ A_i $ と町 $ B_i $ を**双方向に**移動でき,そのタクシーの色は,$ C_i\ =\ 1 $ のとき赤色,$ C_i\ =\ 2 $ のとき青色である.タクシーには料金がかかり,乗車すると以下のように所持金が変化する. - 乗車前の所持金を $ a $ 円とする. - タクシーが赤色の場合,乗車後の所持金が $ a\ -\ 1 $ 円になる. - タクシーが青色の場合,乗車後の所持金が「$ a\ \div\ 2 $ を整数に切り捨てた値」円になる. あなたは IOI 国の町 $ 1 $ に住んでおり,以下の $ Q $ 個の質問の答えを知っておきたい.$ j $ 番目 ($ 1\ \leqq\ j\ \leqq\ Q $) の質問は以下の通りである. - 町 $ 1 $ から出発し,**$ 1 $ 円以上の所持金を残した状態で**町 $ T_j $ に到着するために,最初に少なくとも何円の所持金を持っている必要があるか.ただし,答えが $ L $ 円よりも大きい場合は,代わりに `Large` と答えよ. 町とタクシーの情報,そして質問の内容が与えられたとき,すべての質問に答えるプログラムを作成せよ.

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ M $ $ Q $ $ L $ $ A_1 $ $ B_1 $ $ C_1 $ $ A_2 $ $ B_2 $ $ C_2 $ $ \vdots $ $ A_M $ $ B_M $ $ C_M $ $ T_1 $ $ T_2 $ $ \vdots $ $ T_Q $

Output Format

標準出力に $ Q $ 行で出力せよ.$ j $ 行目 ($ 1\ \leqq\ j\ \leqq\ Q $) には,$ j $ 番目の質問の答えを出力せよ.

Explanation/Hint

### 制約 - $ 2\ \leqq\ N\ \leqq\ 200\,000 $. - $ N\ -\ 1\ \leqq\ M\ \leqq\ 200\,000 $. - $ 1\ \leqq\ Q\ \leqq\ 200\,000 $. - $ 1\ \leqq\ L\ \leqq\ 1\,000\,000\,000 $. - $ 1\ \leqq\ A_i\ \lt\ B_i\ \leqq\ N $ ($ 1\ \leqq\ i\ \leqq\ M $). - $ (A_i,\ B_i)\ \neq\ (A_j,\ B_j) $ ($ 1\ \leqq\ i\ \lt\ j\ \leqq\ M $). - $ 1\ \leqq\ C_i\ \leqq\ 2 $ ($ 1\ \leqq\ i\ \leqq\ M $). - $ 2\ \leqq\ T_j\ \leqq\ N $ ($ 1\ \leqq\ j\ \leqq\ Q $). - どの町の間も,いくつかの道を通って行き来できる. - 入力される値はすべて整数である. ### 小課題 1. ($ 9 $ 点) $ M\ =\ N\ -\ 1 $,$ (A_i,\ B_i)\ =\ (i,\ i\ +\ 1) $ ($ 1\ \leqq\ i\ \leqq\ M $),$ Q\ =\ 1 $,$ N\ \leqq\ 100 $,$ L\ \leqq\ 100 $. 2. ($ 19 $ 点) $ M\ =\ N\ -\ 1 $,$ (A_i,\ B_i)\ =\ (i,\ i\ +\ 1) $ ($ 1\ \leqq\ i\ \leqq\ M $),$ Q\ =\ 1 $. 3. ($ 19 $ 点) $ M\ =\ N\ -\ 1 $,$ (A_i,\ B_i)\ =\ (i,\ i\ +\ 1) $ ($ 1\ \leqq\ i\ \leqq\ M $). 4. ($ 16 $ 点) $ N\ \leqq\ 50\,000 $,$ M\ \leqq\ 50\,000 $,$ Q\ =\ 1 $,$ C_i\ =\ 1 $ ($ 1\ \leqq\ i\ \leqq\ M $). 5. ($ 20 $ 点) $ N\ \leqq\ 50\,000 $,$ M\ \leqq\ 50\,000 $,$ Q\ =\ 1 $. 6. ($ 12 $ 点) $ N\ \leqq\ 50\,000 $,$ M\ \leqq\ 50\,000 $,$ Q\ \leqq\ 50\,000 $. 7. ($ 5 $ 点) 追加の制約はない. ### 採点に関する注意 すべての提出はジャッジシステム上で採点される. 提出されたソースコードは,小課題に対応するすべての採点用入力データについて正しい結果を返したとき,その小課題について正解と認められる. 各提出の得点は,提出されたソースコードについて正解と認められた小課題の得点の合計である. この課題の得点は,**この課題に対するすべての提出の得点の最大値**である. 現在の得点は「提出結果」タブの「自分の得点状況」から確認できる. ### Sample Explanation 1 町 $ 1 $ → 町 $ 2 $ → 町 $ 3 $ → 町 $ 4 $ → 町 $ 5 $ の経路で移動するならば,順に青,赤,青,赤のタクシーに乗ることになる.すると,最初に所持金が $ 10 $ 円あった場合,所持金は $ 10 $ 円 → $ 5 $ 円 → $ 4 $ 円 → $ 2 $ 円 → $ 1 $ 円となり,$ 1 $ 円以上を残した状態で町 $ 5 $ に到着できる. 一方,最初の所持金が $ 9 $ 円以下の場合,$ 1 $ 円以上を残した状態で町 $ 5 $ に到着することはできない. この入力例は小課題 $ 1,\ 2,\ 3,\ 5,\ 6,\ 7 $ の制約を満たす. ### Sample Explanation 2 例えば,$ 1 $ 番目の質問について考えよう. 町 $ 1 $ から出発して町 $ 10 $ に移動するとき,町 $ 1 $ → 町 $ 2 $ → … → 町 $ 9 $ → 町 $ 10 $ の経路をたどることになる.しかし,最初に $ L\ (=\ 25) $ 円持っていたとしても,タクシーを使うごとに所持金が $ 25 $ 円 → $ 12 $ 円 → $ 11 $ 円 → $ 10 $ 円 → … と減っていき,$ 1 $ 円以上を残して町 $ 10 $ にたどり着くことはできない.よって,`Large` と出力しなければならない. この入力例は小課題 $ 3,\ 6,\ 7 $ の制約を満たす. ### Sample Explanation 3 町 $ 1 $ → 町 $ 5 $ → 町 $ 3 $ → 町 $ 2 $ の経路で移動するならば,赤いタクシーに $ 3 $ 回乗ることになる.すると,最初に所持金が $ 4 $ 円あった場合,所持金は $ 4 $ 円 → $ 3 $ 円 → $ 2 $ 円 → $ 1 $ 円となり,$ 1 $ 円以上を残した状態で町 $ 2 $ に到着できる. 一方,最初の所持金が $ 3 $ 円以下の場合,$ 1 $ 円以上を残した状態で町 $ 2 $ に到着することはできない. この入力例は小課題 $ 4,\ 5,\ 6,\ 7 $ の制約を満たす. ### Sample Explanation 4 この入力例は小課題 $ 6,\ 7 $ の制約を満たす.