Pagini recente » Cod sursa (job #1787233) | Cod sursa (job #2156949) | Cod sursa (job #2101035) | Cod sursa (job #2421790) | Cod sursa (job #3186633)
#include <bits/stdc++.h>
#define N 50007
#define int long long
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m;
vector< pair<int,int> >edges[N];
vector<int> dist(N,-1);
vector<bool> viz(N,0);
void Citire()
{
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int x,y,c;
fin >> x >> y >> c;
edges[x].push_back({c,y});
}
fin.close();
}
void Dijkstra()
{
priority_queue< pair<int,int> >pq;
pq.push({0,1});
dist[1]=0;
while( !pq.empty() )
{
int cur=pq.top().second;
pq.pop();
if( !viz[cur] )
{
viz[cur]=1;
for(auto y:edges[cur])
{
int nod= y.second;
int cost= y.first;
if( dist[nod]==-1 or dist[nod]>dist[cur]+cost )
{
dist[nod]=dist[cur]+cost;
pq.push( {-dist[nod],nod} );
}
}
}
}
}
int32_t main()
{
Citire();
Dijkstra();
for(int i=2;i<=n;i++)
if( dist[i]==-1 )fout << "0 ";
else fout << dist[i] << " ";
fout.close();
return 0;
}