時間限制: 1 s
空間限制: 128000 kb
題目等級 : 鑽石 diamond
題解你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!(這句話裡有乙個比較重要的條件)
學校共有n個地點,編號為1~n,其中1號為學校門口(也就是你現在所處的位置),2號為你的教室(也就是你的目的地)。這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,你通過它的時間須恰好為ti秒。這個數可能為負數,意義為時間倒流。
不過,即使沒有引起懷疑,值周隊也布下了最後一道防線:大龍會在教室處不定期出現。當然,你也了解大龍的習性:當前時間的秒數越小,大龍出現的概率就越低,例如:8:13:06這一時刻的秒數是06,就要比8:12:57這個時刻更加安全。
現在的問題是,在不引起懷疑的前提下,最安全的到達時刻的秒數是多少。如果學校門口到教室沒有路(-_-||),請輸出60。
注意,你可以選擇在途中的任何時候經過教室,而不結束「旅程」,具體見樣例。
輸入描述 input description
第一行為兩個整數,n和m,意義在上面已經說過了。
第2行~第m+1行,每行代表一條道路。第i+1行代表第i條道路,這一行有3個整數,ai,bi,ti,表示ai號地點與bi號地點有一條雙向道路,通過它的時間必須為ti秒。
輸出描述 output description
只有一行,為最安全的到達時刻的秒數。
樣例輸入 sample input
input1:
2 12 1 54
input2:
3 31 2 26
1 3 17
2 3 -9
input3:
3 11 3 110
input4:
2 21 2 7
2 1 9
input5:
2 21 2 3
1 1 1
input6:
2 21 2 9
1 2 11
樣例輸出 sample output
output1:
output2:
output3:
output4:
output5:
output6:
資料範圍及提示 data size & hint
樣例1的說明:一共只有兩個地點(多麼福利的資料啊),也只有一條道路,耗時為54秒。最優方案為,經過這個道路9次,耗時486秒,即8分06秒,於8:08:06到達教室。當然,最優方案不唯一。
樣例2的說明:走1->3->1->2,用時17+17+26,於8:01:00到達;或走1->2->3->1->2,用時26-9+17+26,於8:01:00到達。
對於20%的資料,n≤2;對於40%的資料,n≤100;對於70%的資料,n≤1000;
對於100%的資料,2≤n≤7000,0≤m≤9000,1≤ai,bi≤n,|ti|≤109。
分類標籤 tags 點此展開
spfa
廣度優先搜尋
深度優先搜尋
搜尋圖論
spfa變形,用陣列vis[i][j] 表示j秒時是否可以到達i點
#include#define n 1010010using
namespace
std;
intn,m,head[n],tot;
struct
nodee[n];
void add(int u,int v,int
w)struct
pd;int vis[n][65
];queue
q;void
spfa());
while(!q.empty()));}}
}}int
main()
spfa();
for(int i=0;i<=60;i++)
}printf("60
");}
dfs原理是一樣的
#include#define n 1010010using
namespace
std;
intn,m,head[n],tot;
struct
nodee[n];
void add(int u,int v,int
w)int vis[n][62
];void dfs(int u,intw)}
intmain()
dfs(
1,0);
for(int i=0;i<=60;i++)
}printf("60
");}
Codevs 1961 躲避大龍
題目 題解 有一點像數字三角形的某個加強版 spfa 開乙個二維陣列dis i j 表示i號節點有無長度為j的路徑 spfa的取min改為更新dis陣列 注意 一開始沒處理負邊權,wa了兩組 處理負邊時每次 60,tle了好多組 那麼那些負邊權的點在第一次是怎麼過的呢 笑 codevs的資料真是坑的...
躲避大龍(codevs 1961)
題目描述 description 你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!這句話裡有乙個比較重要的條件 學校共有n個地點,編號為1 n,其中1號為學校門口 也就是你現在所處的位置 2號為你的教室 也就是你的目的地 這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,...
codevs1961 躲避大龍 spfa
題目描述 description 你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!這句話裡有乙個比較重要的條件 學校共有n個地點,編號為1 n,其中1號為學校門口 也就是你現在所處的位置 2號為你的教室 也就是你的目的地 這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,...