描述
小信準備去參加騎車比賽,比賽在 n 個城市間進行,編號從 1 到 n。選手們都從城市 1 出發,終點在城市 n。
已知城市間有 m 條道路,每條道路連線兩個城市,注意道路是雙向的。現在小信知道了他經過每條道路需要花費的時間,他想請你幫他計算一下,他這次比賽最少需要花多少時間完成。
輸入第一行輸入兩個整數 n,m(1≤n≤1,000,1≤m≤5,000),分別代表城市個數和道路總數。接下來輸入 m 行,每行輸入三個數字 a,b,c(1≤a,b≤n,1≤c≤200),分別代表道路的起點和道路的終點,以及小信騎車通過這條道路需要花費的時間。保證輸入的圖是連通的。
輸出輸出一行,輸出乙個整數,輸出小信完成比賽需要的最少時間。
輸入樣例 1
5 61 2 2
2 3 3
2 5 5
3 4 2
3 5 1
4 5 1
輸出樣例 1
6分析:記住這道題使用最短路來走的。最短路的方法有: dijkstra 單源最短路演算法,spfa 單源最短路演算法,floyd 多源最短路演算法。當然,多種方法不一定最短最簡便,說其中一種——floyd 多源最短路演算法。
floyd 多源最短路演算法的好處是:floyd 具有高效、**簡短的優勢。他無論怎麼樣都只有乙個公式—— g[i][j]=min(g[i][j],g[i][k]+g[k][j]),有了這個共識,就十分好用了。
**:#includeusing namespace std;
const int maxn=1010;
const int inf=0x3f3f3f3f;
int g[maxn][maxn];
void floyd(int n)
} }} int main()
floyd(n);
cout《這個方法十分簡單,了解演算法請**以下**:
範圍圖:
演算法:
dijkstra堆優化 騎車比賽
第一行輸入兩個整數 n,m 1 n 1,000,1 m 5,000 分別代表城市個數和道路總數。接下來輸入 m 行,每行輸入三個數字 a,b,c 1 a,b n,1 c 200 分別代表道路的起點和道路的終點,以及蒜頭君騎車通過這條道路需要花費的時間。保證輸入的圖是連通的。輸出格式 輸出一行,輸出乙...
計蒜客 騎車比賽
問題描述 蒜頭君準備去參加騎車比賽,比賽在 n 個城市間進行,編號從 1 到 n。選手們都從城市 1 出發,終點在城市 n。已知城市間有 m 條道路,每條道路連線兩個城市,注意道路是雙向的。現在蒜頭君知道了他經過每條道路需要花費的時間,他想請你幫他計算一下,他這次比賽最少需要花多少時間完成。輸入格式...
12 7 比賽題解
這個題的意思就是對於給定的數x,找到兩個數a,b滿足以下條件 可以看出a,b是不唯一的,所以這道題是spj,那我們只要找到最好找的就好了。a b 最大的時候,就是a b x對吧,正好這時候也滿足題目中的其它要求。如果x x 都不滿足大於 x 這個條件的話,肯定就無解了,所以我們只需要判斷這個條件就好...