HDU 1874 暢通工程續 最短路 Floyed

/*
 * 模板題
 */
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e2 + 10;
const int MAXM = 2e3 + 10;
const int INF = 0x3f3f3f3f;

int n, m, s, e;
int F[MAXN][MAXN];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    //cout << setiosflags(ios::fixed) << setprecision(1); //保留小數點後1位
    //cout << setprecision(1); //保留1位有效數字
//    freopen("in.txt", "r", stdin);
//    freopen("out.txt", "w", stdout);

    while(cin >> n >> m){
        memset(F, INF, sizeof F);
        for(int i = 0; i <= n; ++i) F[i][i] = 0;
        for(int i = 1; i <= m; ++i){
            int u, v, w;
            cin >> u >> v >> w;
            F[u][v] = F[v][u] = min(F[v][u], w);
        }
        cin >> s >> e;
        for(int k = 0; k < n; ++k)
            for(int i = 0; i < n; ++i)
                for(int j = 0; j < n; ++j)
                    F[i][j] = min(F[i][j], F[i][k] + F[k][j]);
        if(F[s][e] == INF) cout << -1 << endl;
        else cout << F[s][e] << endl;
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章