啊,標題雖然是求次短路,但是我們今天不寫求次短路的演算法,我們來寫一下求乙個序列中次小值的演算法吧。
我們就這麼寫:
#include #define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e5+7;
int a[maxn];
int main()
int mn1 = inf,mn2 = inf;
for(int i=1;i<=n;i++)
if(mn2>a[i] && mn1上面的mn1只是與a[i]做了交換,這樣我們在下一步求次小值的時候就可以用到最小值和a[i]了。
很清晰吧。
那麼怎麼求次短路大家應該都會了吧,逃~
Dijkstra求最短路與次短路
花了乙個晚上加上午兩節課的時間來思考這個問題,一開始進了個誤區,後來發現不對,找到了正確思路,現在來做個總結 最短路 假設有如下 無向圖 每條邊有權,要求從a到g的最短路,設陣列d i 用來記錄每個點到a的最短路,d用來記錄權值d 0 0。先來說一下我一開始的誤區,在看了一些介紹這個演算法的文章後我...
Dijkstra求最短路
題目鏈結 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊長為z。輸出格式 輸出乙個整數,表示1...
Dijkstra求最短路
題目鏈結 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為非負值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊長為z。輸出格式 輸出乙個整數,表示...