Untitled
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