Untitled

 avatar
unknown
plain_text
a year ago
1.1 kB
2
Indexable
class Solution {
public:
    struct cmp{
        bool operator()(pair<int,int>a,pair<int,int>b){
            return a.second > b.second;
        }
    };

    int networkDelayTime(vector<vector<int>>& times, int n, int src) {
        vector<vector<pair<int,int>>>adj(n+1); //node,dist of it from source
        for(auto i:times){
            adj[i[0]].push_back({i[1],i[2]});
        }
        vector<int>dist(n+1,INT_MAX); //1 ordering
        dist[0]=0;

        priority_queue<pair<int,int>,vector<pair<int,int>>,cmp>pq;
        pq.push({src,0});
        dist[src]=0;
        while(!pq.empty()){
            pair<int,int>top=pq.top();
            pq.pop();

            for(auto nbr:adj[top.first]){
                if(dist[nbr.first] > dist[top.first] +nbr.second){
                    dist[nbr.first]=dist[top.first]+nbr.second;
                    pq.push({nbr.first,dist[nbr.first]});
                }
            }
        }
        int res=INT_MIN;
        for(auto i:dist){
           res=max(res,i);
        }
        if(res==INT_MAX) return -1;
        return res;
    }
};
Editor is loading...
Leave a Comment