Cod sursa(job #877912)

Utilizator RobertBBadea Corneliu Robert RobertB Data 13 februarie 2013 13:57:39
Problema Algoritmul lui Dijkstra Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#define infinit 0x777f7f7f
using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

struct list_muc {
	int s;
	int f;
	int c;
};

int N,M,x,y,cost;
int dist[50001];
list_muc arc[250001];
bool ok = 1;

int main()
{
	f >> N >> M;
	for(int i = 1; i <= N; i++) {
		dist[i] = infinit;
	}
	for(int i = 0; i < M; i++) {
		f >> x >> y >> cost;
		arc[i].s = x;
		arc[i].f = y;
		arc[i].c = cost;
		if(x == 1) {
			dist[y] = cost;
		}
	}
	while(ok) {
		ok = 0;
		for(int i = 1; i <= M; i++) {
			if(dist[arc[i].f] > dist[arc[i].s] + arc[i].c) {
				dist[arc[i].f] = dist[arc[i].s] + arc[i].c;
				ok = 1;
			}
		}
	}
	for(int i = 2; i <= N; i++) {
		if(dist[i] == infinit) {
			g << 0 << " ";
		} else {
			g << dist[i] << " ";
		}
	}
}