最短路径

#include "stdio.h"
/*
5 5
2 3 2
1 2 -3
1 5 5
4 5 2
3 4 3
0 -3 2 -1 2 4
*/
int main() {
    int a[10][10],dis[10],book[10], u[10], v[10], w[10] ,n, m;
    int inf = 9999999;
    int i, k, flag;
    scanf("%d%d",&n,&m);

    for(i = 1; i <= m; i++) {
        scanf("%d%d%d",&u[i],&v[i],&w[i]);
    }
    for(i = 1; i <= n; i++){
        dis[i] = inf;
    }
    dis[1] = 0;
    
    for(k = 1; k <= n - 1; k++){
        flag = 0;
        for(i = 1; i <= m; i++){
            if(dis[v[i]] > dis[u[i]] + w[i]){
                dis[v[i]] = dis[u[i]] + w[i];
                flag = 1;
            }
        }
        if(flag == 0)break;
    }
    for(i = 1; i <= n; i++){
        printf("%d  ",dis[i]);
    }
    return 0;
}

 

posted @ 2021-04-17 14:53  荣荣荣荣荣荣  阅读(39)  评论(0)    收藏  举报