Pagini recente » Cod sursa (job #1659680) | Cod sursa (job #1003634) | Cod sursa (job #2674770) | Cod sursa (job #806496) | Cod sursa (job #2453787)
#include <fstream>
#include <iostream>
#define inf 1000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct muchie{
int b, c;
muchie *next;
};
muchie *G[50010];
void add(int i, int j, int c) {
muchie *p = new muchie;
p->b = j;
p->c = c;
p->next = G[i];
G[i] = p;
}
int n, m, viz[50010], drum[50010];
int main() {
f >> n >> m;
for(int i = 1; i <= m; i++) {
int a, b, c;
f >> a >> b >> c;
add(a, b, c);
}
for(int i = 2; i <= n; i++)
drum[i] = inf;
for(int i = 1; i <= n; i++) {
int curr = 0, minim = inf;
for(int j = 1; j <= n; j++)
if(drum[j] < minim && !viz[j]) {
minim = drum[j];
curr = j;
}
viz[curr] = 1;
for(muchie *p = G[curr]; p ; p = p->next) {
if(drum[p->b] > drum[curr] + p->c)
drum[p->b] = drum[curr] + p->c;
}
}
for(int i = 1; i <= n; i++)
g << drum[i] << ' ';
}