Pagini recente » Cod sursa (job #2462785) | Cod sursa (job #1853590) | Cod sursa (job #1248660) | Cod sursa (job #2496281) | Cod sursa (job #2779810)
#include <bits/stdc++.h>
#define NMAX 50005
#define pb push_back
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
struct A
{
int cost, dest;
};
vector < A > v[NMAX];
multimap < int, int > b;
int main()
{
vector < A > :: iterator it;
int n, m, x, y, z, i, r[NMAX];
fin >> n >> m;
while ( m-- )
{
fin >> x >> y >> z;
v[x].pb ( { z, y } );
}
for ( i = 2; i <= n; i++ ) r[i] = INT_MAX;
b.insert ( { 0, 1 } );
while ( b.empty() == 0 )
{
x = b.begin() -> second;
b.erase ( b.begin() );
for ( it = v[x].begin(); it != v[x].end(); it++ ) if ( r[x] + (*it).cost < r[(*it).dest] )r[(*it).dest] = r[x] + (*it).cost, b.insert ( { r[(*it).dest], (*it).dest } );
}
for ( i = 2; i <= n; i++ )
{
if ( r[i] != INT_MAX ) fout << r[i] << ' ';
else fout << 0 << ' ';
}
return 0;
}