Pagini recente » Cod sursa (job #1790330) | grigoremoisil2008 | Cod sursa (job #81297) | Cod sursa (job #233685) | Cod sursa (job #1077939)
#include <stdio.h>
#include <vector>
#define print(a ) printf("%d", a );
#define read(a) scanf("%d", &a);
#define maxn 50000
#define inf 10000000
using namespace std;
struct Edge
{
int u, v, w;
Edge(int _u, int _v, int _w)
{
u=_u;v=_v;w=_w;
}
};
int n,m;
vector<Edge> edges;
int dmin[maxn];
void afisare()
{
for (int i = 1; i < n; ++i)
printf("%d ",dmin[i+1]);
}
void citire()
{
freopen("dijkstra.in", "r", stdin);
read(n);read(m);
for(int i=0;i<m;++i)
{
int a, b, c;
read(a);read(b);read(c);
edges.push_back(Edge(a,b,c));
}
}
void bellman_ford(int x)
{
dmin[x] = 0;
for (int i = 0; i < n - 1; ++i)
for (int j = 0; j < edges.size(); ++j)
if (dmin[edges[j].u] + edges[j].w < dmin[edges[j].v])
dmin[edges[j].v] = dmin[edges[j].u] + edges[j].w;
}
int main()
{
freopen("dijkstra.out", "w", stdout);
citire();
for (int i = 1; i <= n; ++i)
dmin[i] = inf;
dmin[1]=0;
bellman_ford(1);
afisare();
return 0;
}