Pagini recente » Cod sursa (job #1132514) | Clasament Teme ACM Unibuc 2013 | Cod sursa (job #2859153) | Cod sursa (job #2084938) | Cod sursa (job #3192798)
#include <bits/stdc++.h>
#define NMax 200000
#define inf 1e9
using namespace std;
ifstream fin ( "dijkstra.in" );
ofstream fout ( "dijkstra.out" );
int n, m;
int u, v, c;
vector<pair<int, int> > adj[NMax + 1]; ///{nod, cost};
priority_queue<pair<int, int> > pq; ///{dist. minima, val. nod};
int dmin[NMax + 1];
int main()
{
fin >> n >> m;
for ( int i = 1; i <= m; i++ )
{
fin >> u >> v >> c;
adj[u].push_back({v, c});
}
for ( int i = 2; i <= n; i++ ) dmin[i] = inf;
pq.push({0, 1});
while ( !pq.empty() )
{
pair<int, int> x = pq.top(); pq.pop();
if ( -x.first != dmin[x.second] ) continue;
for ( pair<int, int> u: adj[x.second] )
{
if ( dmin[x.second] + u.second < dmin[u.first] )
{
dmin[u.first] = dmin[x.second] + u.second;
pq.push({-dmin[u.first] ,u.first});
}
}
}
for ( int i = 2; i <= n; i++ )
if ( dmin[i] == inf ) fout << 0 << " ";
else fout << dmin[i] << " ";
return 0;
}