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;
}
0 Comments