Untitled
unknown
plain_text
2 years ago
1.1 kB
7
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