class Solution {
public:
vector<int> dijkstra(int V, vector<vector<int>> &edges, int src) {
// Code here
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
vector<vector<pair<int,int>>>adj(V);
for(auto e:edges){
adj[e[0]].push_back({e[1],e[2]});
adj[e[1]].push_back({e[0],e[2]});
}
vector<int>dis(V,100000);
vector<bool>explored(V,0);
dis[src]=0;
pq.push({0,src});
while(!pq.empty()){
auto temp=pq.top();
pq.pop();
int node=temp.second;
int distance=temp.first;
if(explored[node])continue;
explored[node]=1;
for(auto e:adj[node]){
int nei=e.first;
int w=e.second;
if(explored[nei])continue;
if(dis[node]+w<dis[nei]){
dis[nei]=dis[node]+w;
pq.push({dis[nei],nei});
}
}
}
return dis;
}
};
No comments:
Post a Comment