NOIP2017提高組正式賽 逛公園

2021-08-11 04:33:45 字數 1246 閱讀 4442

description

策策每天都會去逛公園,他總是從1號點進去,從��號點出來。

策策喜歡新鮮的事物,他不希望有兩天逛公園的路線完全一樣,同時策策還是乙個特別熱愛學習的好孩子,他不希望每天在逛公園這件事上花費太多的時間。如果1號點到��號點的最短路長為��,那麼策策只會喜歡長度不超過�� + ��的路線。

策策同學想知道總共有多少條滿足條件的路線,你能幫幫他嗎?

為避免輸出過大,答案對��取模。

如果有無窮多條合法的路線,請輸出−1。

input

輸入檔名為 park.in 。

第一行包含乙個整數 ��, 代表資料組數。

接下來��組資料,對於每組資料:

第一行包含四個整數 ��,��,��,��,每兩個整數之間用乙個空格隔開。

接下來��行,每行三個整數�� �� ,�� �� ,�� �� , 代表編號為�� �� ,�� �� 的點之間有一條權值為 �� �� 的有向邊,每兩個整數之間用乙個空格隔開。

output

輸出檔案包含 ��行,每行乙個整數代表答案。

sample input

2 5 7 2 10

1 2 1

2 4 0

4 5 2

2 3 2

3 4 1

3 5 2

1 5 3

2 2 0 10

1 2 0

2 1 0

sample output

3 -1

樣例說明:

對於第一組資料,最短路為 3。

1 – 5, 1 – 2 – 4 – 5, 1 – 2 – 3 – 5 為 3 條合法路徑。

對於 100%的資料, 1 ≤ p≤ 10^ 9 ,1 ≤ bi ,ci ≤ 0,0 ≤ di ≤ 1000。

想法:

跑兩遍spfa,分別求出dis[i],dis1[i]分別表示1到i的距離,i到n的距離

-1的情況就是有0環,且dis[0環的某個點]+dis1[那個點]<=dis[n]+k

先構造出最短路圖(dis[x]+(x,y)==dis[y]的話,(x,y)是最短路圖的一條邊),最短路圖中的乙個環肯定會是0環

拓補排序然後,如果會-1就輸出

按照拓補序dp,設f[i][j]為到第i個點,距離為dis[i]+j的方案總數,按照拓補序和原邊dp

為了避免後效性,將j迴圈放外面,且如果dis[i]+dis1[i]+j>dis[n]+k,就不用這個狀態了

NOIP2017提高組正式賽 寶藏

description 參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 n 個深埋在地下的寶藏屋,也給出了這 n 個寶藏屋之間可供開發的 m 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發寶...

NOIP2017普及組正式賽 跳房子

這一題很有它的價值,我都要認真思考一番才能夠想到方法。先講一下題目大意 題目描述 跳房子,也叫跳飛機,是一種世界性的兒童遊戲,也是中國民間傳統的體育遊戲之一。跳房子的遊戲規則如下 在地面上確定乙個起點,然後在起點右側畫 n 個格仔,這些格仔都在同一條直線上。每個格仔內有乙個數字 整數 表示到達這個格...

Noip2017提高組 乳酪

noip 2017 提高組 不怎麼難啦 思路如下 首先先寫乙個函式判斷兩個洞是否相連,即兩洞之間距離是否小於等於球直徑 注意是直徑 struct dong dong p 1001 bool pd dong a,dong b 第二個難點在於如何判斷是否可以穿過乳酪,對此我們可以模擬老鼠鑽洞 run函式...