Pagini recente » Cod sursa (job #345992) | Cod sursa (job #2485267) | Cod sursa (job #2568616) | Cod sursa (job #2973867) | Cod sursa (job #658702)
Cod sursa(job #658702)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define maxN 250005
vector < pair <int , int> > lista[maxN];
queue <int> Q;
int cost[maxN] , N , M;
bool viz[maxN];
int main ()
{
freopen ("dijkstra.in" , "r" , stdin);
freopen ("dijkstra.out" , "w" , stdout);
scanf ("%d %d" , &N , &M);
int a , b , c;
for (int i = 1 ; i <= M ; ++i)
{
scanf ("%d %d %d" , &a , &b , &c);
lista[a].push_back (make_pair (b , c));
}
int nod;
Q.push (1);
while (!Q.empty ())
{
nod = Q.front ();
for (unsigned i = 0 ; i < lista[nod].size () ; ++i)
{
if (viz[lista[nod][i].first])
continue;
cost[lista[nod][i].first] = cost[nod] + lista[nod][i].second;
viz[lista[nod][i].first] = 1;
Q.push (lista[nod][i].first);
}
Q.pop ();
}
for (int i = 2 ; i <= N ; ++i)
printf ("%d " , cost[i]);
return 0;
}