Pagini recente » Cod sursa (job #647460) | Cod sursa (job #1145478) | Cod sursa (job #1002349) | Cod sursa (job #560836) | Cod sursa (job #1333441)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#define inf 0x7fffffff
using namespace std;
int dmin[50005], n, m;
struct vecin
{
int y, c;
};
struct cmp
{
bool operator()(int a, int b)
{
return dmin[a] > dmin[b];
}
};
vector<vecin> v[50005];
priority_queue<int, vector<int>, cmp> q;
void dijkstra()
{
q.push(1);
while (!q.empty())
{
int top = q.top();
q.pop();
for (int i = 0; i < v[top].size(); i++)
if (dmin[v[top][i].y] > dmin[top] + v[top][i].c)
{
dmin[v[top][i].y] = dmin[top] + v[top][i].c;
q.push(v[top][i].y);
}
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
int x, y, c;
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++)
{
scanf("%d %d %d", &x, &y, &c);
v[x].push_back({y, c});
}
for (int i = 2; i <= n; i++)
dmin[i] = inf;
dijkstra();
for (int i = 2; i <= n; i++)
if(dmin[i] == inf)
printf("0 ");
else
printf("%d ", dmin[i]);
return 0;
};