Cod sursa(job #174209)

Utilizator scvalexAlexandru Scvortov scvalex Data 8 aprilie 2008 17:23:06
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

int N;
int D[101][101];

int main(int argc, char *argv[]) {
	FILE *fi = fopen("royfloyd.in", "r");
	fscanf(fi, "%d", &N);
	for (int i(0); i < N; ++i)
		for (int j(0); j < N; ++j) {
			fscanf(fi, "%d", &D[i][j]);
			if ((i != j) && (D[i][j] == 0))
				D[i][j] = 1<<30;
		}
	fclose(fi);

	for (int q(0); q < N; ++q)
		for (int p(0); p < N; ++p)
			for (int r(0); r < N; ++r)
				if (D[p][q] + D[q][r] < D[p][r])
					D[p][r] = D[p][q] + D[q][r];
	
	FILE *fo = fopen("royfloyd.out", "w");
	for (int i(0); i < N; ++i) {
		for (int j(0); j < N; ++j)
			fprintf(fo, "%d ", D[i][j]);
		fprintf(fo, "\n");
	}
	fclose(fo);

	return 0;
}