Pagini recente » Cod sursa (job #2270301) | Cod sursa (job #2426277) | Cod sursa (job #603201) | Cod sursa (job #811152) | Cod sursa (job #2779812)
#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;
bitset < NMAX > viz;
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 } );
}
r[1] = 0;
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() );
if ( viz[x] == 0 )
{
viz[x] = 1;
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;
}