Pagini recente » Cod sursa (job #399251) | Cod sursa (job #219781) | Cod sursa (job #372087) | Cod sursa (job #48078) | Cod sursa (job #277486)
Cod sursa(job #277486)
#include <fstream>
#include <iostream>
using namespace std;
typedef struct{
int x, y, c;
} muchie;
#define nMax 250001
#define inf 0x3f3f3f3f
#define root 1
muchie G[nMax];
int d[nMax];
int n,m;
void citire(char file[]){
ifstream fin(file);
fin >> n >> m;
for (int i=0;i<=n;i++)
d[i] = inf;
d[root] = 0;
for (int i=0;i<m;i++){
fin >> G[i].x >> G[i].y >> G[i].c;
if ( G[i].x == root)
d[G[i].y] = G[i].c;
}
}
void solve(){
int cont = 1;
while (cont){
cont = 0;
for (int i=0;i<m;i++)
if (d[G[i].y] > d[G[i].x] + G[i].c && G[i].y != root)
d[G[i].y] = d[G[i].x] + G[i].c, cont = 1;
}
}
void scriere(char file[]){
ofstream fout(file);
for (int i=2;i<=n;i++)
fout << (d[i] < inf?d[i]:0) << " ";
fout.close();
}
int main(){
citire("dijkstra.in");
solve();
scriere("dijkstra.out");
return 0;
}