Pagini recente » Cod sursa (job #345238) | Cod sursa (job #2139038) | Cod sursa (job #2882303) | Cod sursa (job #87367) | Cod sursa (job #1357624)
#include<stdio.h>
#include<vector>
#include<queue>
#include<string.h>
#define MAX_VAL 2000000000
using namespace std;
int n, m;
struct node {
vector<int> next;
vector<int> vals;
};
node nodes[50010];
int vals[50010];
queue<int> q;
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 0 ; i < m ; ++i) {
int x, y, val;
scanf("%d%d%d", &x, &y, &val);
nodes[x].next.push_back(y);
nodes[x].vals.push_back(val);
}
for(int i = 2 ; i < 50010 ; ++i) {
vals[i] = MAX_VAL;
}
q.push(1);
while(!q.empty()) {
int c_node = q.front();
q.pop();
int size = nodes[c_node].next.size();
for(int i = 0 ; i < size ; ++i) {
if(vals[nodes[c_node].next[i]] > vals[c_node] + nodes[c_node].vals[i]) {
vals[nodes[c_node].next[i]] = vals[c_node] + nodes[c_node].vals[i];
q.push(nodes[c_node].next[i]);
}
}
}
for(int i = 2 ; i <= n ; ++i) {
if(vals[i] == MAX_VAL) printf("0 ");
else printf("%d ", vals[i]);
}
return 0;
}