Pagini recente » Cod sursa (job #603309) | Cod sursa (job #2577078) | Cod sursa (job #979798) | Cod sursa (job #3271325) | Cod sursa (job #145460)
Cod sursa(job #145460)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
#define MAXN 50005
int N, d[MAXN];
vector< pair<int, int> > con[MAXN];
queue<int> Q;
char in[MAXN];
int main()
{
freopen("dijkstra.in", "rt", stdin);
freopen("dijkstra.out", "wt", stdout);
int M;
scanf("%d %d", &N, &M);
for (; M; M--)
{
int x, y, cst;
scanf("%d %d %d", &x, &y, &cst);
con[x].push_back( make_pair(y, cst) );
}
memset( d, 0x3f, sizeof(d) );
d[1] = 0; Q.push(1);
for (; !Q.empty(); Q.pop())
{
int i = Q.front();
vector< pair<int, int> > :: iterator it;
for (it = con[i].begin(); it != con[i].end(); it++)
if (d[i] + (*it).second < d[(*it).first])
{
d[ (*it).first ] = d[i] + (*it).second;
if (!in[ (*it).first ])
Q.push( (*it).first ),
in[ (*it).first ] = 1;
}
in[i] = 0;
}
for (int i = 2; i <= N; i++)
printf("%d ", d[i]);
printf("\n");
return 0;
}