在這個世界的背後,潛藏著一張看不見的網——不是由線與節點構成,而是由事件與因果交織而成。
每一個事件都是一滴水,而因果則是將它們串連成河的力量。時間,則是這條河流動的節奏。你,名為「編織者」,受命於最後的觀測者之手,被喚醒於命運的裂縫之中。因果之河開始混濁,一場被稱為「終章」的事件即將發生,它不屬於任何自然之律,卻將影響所有未來的形狀。
你站在時間之樹的枝頭,手中握著 $\color{black}K$ 條尚未折斷的根源線索——這是仍可觸發未來的過去。它們或深埋於久遠的歷史,或剛剛誕生於昨日。這些節點是唯一能通往終章的可能之門。
但路並不直白。這世界遵循嚴格的邏輯:一事件必先導致另一事件,猶如倒下的骨牌,須等前者靜靜完成自己的墜落,後者才得以啟程。這些「通往未來的道路」——即因果邊——有其延遲與代價:$\color{black}1$ 單位時間的等待,才換得一次觸動命運的躍遷。
在這龐大而有序的因果圖景中,你的任務是:
選擇一個過去,讓未來如期而至。
在那 $\color{black}K$ 個起點中,找出一個能最早導致終章 $\color{black}T$ 發生的節點。若無法觸及,那麼這條世界線將悄然死去,如雪落無聲。
第一行有四個整數 $\color{black}{N, M, K,T}$——事件數、因果關係數、起點數、你欲觸發的終點事件。
接下來 $\color{black}M$ 行,每行二個整數 $\color{black}{u, v}$,代表事件 $\color{black}u$ 可在 $\color{black}1$ 單位時間後導致事件 $\color{black}v$。
再一行,$\color{black}K$ 個整數,代表起點事件。
輸出一個整數,為從起點觸發至終點 $\color{black}T$ 所需的最短時間。若不可達,輸出 $\color{black}-1$。
4 6 2 2 2 4 2 1 2 3 3 1 3 2 3 4 4 3
1
5 9 1 4 1 2 2 1 2 4 3 2 3 4 3 5 4 1 5 2 5 3 5
2
4 4 1 3 1 2 1 3 1 4 2 4 4
-1
測資一:選擇$3\rightarrow 2$最短
測資二:選擇$5\rightarrow 3 \rightarrow 2$最短
測資三:無法到達,輸出-1