a580: [讀書會] 因果終章
標籤 :
通過比率 : 2人/2人 ( 100% ) [非即時]
評分方式:
Tolerant

最近更新 : 2025-05-05 19:33

內容

在這個世界的背後,潛藏著一張看不見的網——不是由線與節點構成,而是由事件與因果交織而成。

每一個事件都是一滴水,而因果則是將它們串連成河的力量。時間,則是這條河流動的節奏。你,名為「編織者」,受命於最後的觀測者之手,被喚醒於命運的裂縫之中。因果之河開始混濁,一場被稱為「終章」的事件即將發生,它不屬於任何自然之律,卻將影響所有未來的形狀。

你站在時間之樹的枝頭,手中握著 $\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$。

範例輸入 #1
4 6 2 2
2 4
2 1
2 3
3 1
3 2
3 4
4 3
範例輸出 #1
1
範例輸入 #2
5 9 1 4
1 2
2 1
2 4
3 2
3 4
3 5
4 1
5 2
5 3
5
範例輸出 #2
2
範例輸入 #3
4 4 1 3
1 2
1 3
1 4
2 4
4
範例輸出 #3
-1
測資資訊:
記憶體限制: 256 MB
公開 測資點#0 (10%): 1.0s , <1M
公開 測資點#1 (10%): 1.0s , <10M
公開 測資點#2 (10%): 1.0s , <10M
公開 測資點#3 (10%): 1.0s , <1M
公開 測資點#4 (10%): 1.0s , <10M
公開 測資點#5 (10%): 1.0s , <10M
公開 測資點#6 (10%): 1.0s , <10M
公開 測資點#7 (10%): 1.0s , <10M
公開 測資點#8 (10%): 1.0s , <10M
公開 測資點#9 (10%): 1.0s , <10M
提示 :

測資一:選擇$3\rightarrow 2$最短

測資二:選擇$5\rightarrow 3 \rightarrow 2$最短

測資三:無法到達,輸出-1

標籤:
出處:
[管理者:
haha (大學長)
]


編號 身分 題目 主題 人氣 發表日期
214
haha (大學長)
a580
題解
6 2025-05-05 20:08