dijkstra求次短路
阿新 • • 發佈:2018-12-01
啊,標題雖然是求次短路,但是我們今天不寫求次短路的演算法,我們來寫一下求一個序列中次小值的演算法吧。
怎麼求最小值大家都會吧,但是我們在求次小值的時候需要用到上一次的最小值和序列的大小。
我們就這麼寫:
#include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn = 1e5+7; int a[maxn]; int main() { int n; while(cin>>n) { for(int i=1;i<=n;i++) { cin>>a[i]; } int mn1 = INF,mn2 = INF; for(int i=1;i<=n;i++) { if(mn1>a[i]) { swap(mn1,a[i]); } if(mn2>a[i] && mn1<a[i]) { mn2 = a[i]; } } cout<<mn1<<" "<<mn2<<endl; } return 0; }
上面的mn1只是與a[i]做了交換,這樣我們在下一步求次小值的時候就可以用到最小值和a[i]了。
很清晰吧。
那麼怎麼求次短路大家應該都會了吧,逃~