Pagini recente » Cod sursa (job #79758) | Cod sursa (job #1956716) | Cod sursa (job #2771469) | Cod sursa (job #2665838) | Cod sursa (job #1980429)
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<vector>
#define N 50001
using namespace std;
int n, m;
int result[N];
typedef struct punct
{
int y;
int val;
};
vector<vector<punct>> a(N);
void read()
{
scanf("%d %d", &n, &m);
for (int i = 2; i <= n; i++)
{
result[i] = -1;
}
for (int t = 1; t <= m; t++)
{
int x, y, val;
punct q;
scanf("%d %d %d", &x, &y, &val);
q.y = y;
q.val = val;
a[x].push_back(q);
}
}
void eff(int x)
{
for (int i = 0; i < a[x].size(); i++)
{
int y = a[x][i].y;
int nr = result[x] + a[x][i].val;
if ( nr < result[y] ||result[y]==-1)
{
result[y] = nr;
eff(y);
}
}
}
void solve()
{
eff(1);
}
void display()
{
for (int i = 2; i <= n; i++)
{
if (result[i] == -1)
{
printf("0 ");
}
else
{
printf("%d ", result[i]);
}
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
read();
solve();
display();
return 0;
}