Pagini recente » Cod sursa (job #2683532) | Cod sursa (job #8443) | Cod sursa (job #2923213) | Cod sursa (job #1184698) | Cod sursa (job #2856992)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,a,b,c,d[50001];
vector<pair<int,int>>v[50001];
const int INF=1000000000;
void dijkstra(int x)
{
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
fill(d+1,d+n+1,INF);
d[x]=0;
pq.push({0,x});
while(!pq.empty())
{
pair<int,int>nod=pq.top();
pq.pop();
int q=nod.second;
if(d[q]!=nod.first)
continue;
for(int i=0;i<(int)v[q].size();i++)
{
if(d[q]+v[q][i].first<d[v[q][i].second])
{
d[v[q][i].second]=d[q]+v[q][i].first;
pq.push({v[q][i].first+nod.first,v[q][i].second});
}
}
}
}
void adauga(int a,int b,int c)
{
v[a].push_back({c,b});
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>a>>b>>c;
adauga(a,b,c);
}
dijkstra(1);
for(int i=2;i<=n;i++)
if(d[i]!=0)
fout<<d[i]<<" ";
else fout<<0<<" ";
}