Subscribe Us

Responsive Advertisement

Advertisement

Graph Theory - Dijkstra(Implementation)Using C++

 



  #include<bits/stdc++.h>

using namespace std;

#define ll long long int

const ll N=100000;

const ll inf=100000000000;

vector<pair<ll,ll>>adj[N];

ll dist[N];

void dijkstra(ll source,ll nod)

{

    ll i;

    for(i=0;i<nod;i++)dist[i]=inf;

    dist[source]=0;

    priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>>pq;

    pq.push({0,source});

    while(!pq.empty())

    {

        ll node,dis;

        node=pq.top().second;

        dis=pq.top().first;

        pq.pop();

        if(dist[node]<dis)continue;

        for(auto u:adj[node])

        {

            ll adjNode,adjDis;

            adjNode=u.first;

            adjDis=u.second;

            if(dis+adjDis<dist[adjNode])

            {

                dist[adjNode]=dis+adjDis;

                pq.push({dist[adjNode],adjNode});



            }


        }



    }

  for(i=0;i<nod;i++)cout<<dist[i]<<" ";



}

int main()

{


    ll node,edge;

    cin>>node>>edge;

    while(edge--)

    {

        ll u,v,w;

        cin>>u>>v>>w;

        adj[u].push_back({v,w});

        adj[v].push_back({u,w});


    }

    dijkstra(0,node);




    return 0;

}


Post a Comment

0 Comments