Pagini recente » Cod sursa (job #2067691) | Cod sursa (job #446185) | Cod sursa (job #1291805) | Cod sursa (job #2828125) | Cod sursa (job #1887603)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#define NMAX 50005
#define MMAX 250005
using namespace std;
int n, m;
struct pr
{
int nod;
int cost;
pr(int a=0, int b=0)
{
nod = a;
cost = b;
}
};
vector<pr> G[MMAX];
queue<int> q;
int mx[NMAX];
void solve()
{
q.push(1);
mx[1] = 1;
while(!q.empty())
{
int elem = q.front();
q.pop();
vector<pr>::iterator it;
for (it = G[elem].begin(); it!=G[elem].end(); it++)
{
if (mx[elem] + it->cost < mx[it->nod])
{
mx[it -> nod] = mx[elem] + it->cost;
q.push(it->nod);
}
}
}
for (int i=2; i<=n; i++)
{
if (mx[i] == 30000)
printf("0 ");
else
printf("%d ", mx[i]-1);
}
}
void read()
{
int x, y, z;
scanf("%d %d\n", &n, &m);
for (int i=0; i<m; i++)
{
scanf("%d %d %d\n", &x, &y, &z);
G[x].push_back(pr(y, z));
//G[x].cost = z;
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
read();
for (int i=2; i<=n; i++)
mx[i] = 30000;
solve();
return 0;
}