Cod sursa(job #1355788)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 22 februarie 2015 23:04:04
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
#define NMAX 1000
#define INF 1001

using namespace std;
typedef unsigned long long ull;

ull d[NMAX][NMAX], mat[NMAX][NMAX];

int N;

void royfloyd() {
	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < N; ++j) {
			d[i][j] = mat[i][j];
		}
	}

	for (int k = 0; k < N; ++k) {
		for (int i = 0; i < N; ++i) {
			for (int j = 0; j < N; ++j) {
				d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
			}
		}
	}
}

int main(void) {
	FILE * iff = fopen("royfloyd.in","r");
	FILE * off = fopen("royfloyd.out","w");

	fscanf(iff,"%d",&N);
	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < N; ++j) {

			fscanf(iff,"%llu",&mat[i][j]);
		}
	}

	royfloyd();

	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < N; ++j) {
			fprintf(off,"%llu ",d[i][j]);
		}
		fprintf(off,"\n");
	}

	return 0;
}