vector <int> dijkstra(int V, vector<vector<int>> adj[], int S)
{
// Code here
vector<int>dis(V,1000000000);
dis[S]=0;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
pq.push({0,S});
while(!pq.empty())
{
int node=pq.top().second;
int dist=pq.top().first;
pq.pop();
for(auto u:adj[node])
{
int adjnode=u[0];
int adjdist=u[1];
if(dist+adjdist<dis[adjnode])
{
dis[adjnode]=dist+adjdist;
pq.push({dis[adjnode],adjnode});
}
}
}
return dis;
}
0 Comments