Subscribe Us

Responsive Advertisement

Advertisement

13.Dijkstra's Algorithm - Using Priority Queue

     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;

    }

Post a Comment

0 Comments