力扣(Dijkstra算法) 743. 網絡延遲時間

在這裏插入圖片描述
在這裏插入圖片描述

class Solution {
public:
    int networkDelayTime(vector<vector<int>>& times, int N, int K) {
        int arr[N+1][N+1];
        //初始化
        for(int i = 1;i <= N;i++){
            for(int j = 1;j <= N;j++){
                if(i == j) arr[i][j] = 0;
                else arr[i][j] = INT_MAX;                  
            }
        }
        for(int i = 0;i < times.size();i++){
            arr[times[i][0]][times[i][1]] = times[i][2];
        }
        vector<int> book(N+1,0);
        int dis[N+1];
        for(int i = 1;i <= N;i++){
            dis[i] = arr[K][i];
        }
        for(int i = 1;i < N;i++){
            int min = INT_MAX,flag = 0;
            //找出距離K點最近的那個點
            for(int j = 1;j <= N;j++){
                if(dis[j] < min && book[j] != 1){
                    flag = j;
                    min = dis[j];
                }
            }
            book[flag] = 1;
            for(int j = 1;j <= N;j++){
                if(arr[flag][j] != INT_MAX){
                    if(dis[flag] + arr[flag][j] < dis[j]){
                        dis[j] = dis[flag] + arr[flag][j];
                    }
                }
            }
        }
        int maxn = 0;
        for(int i = 1;i <= N;i++){
            maxn = max(maxn,dis[i]);
	    }
        if(maxn == INT_MAX) return -1;
        else return maxn;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章