Cod sursa(job #596558)

Utilizator mihai.ortelecanOrtelecan Mihai alexandru mihai.ortelecan Data 17 iunie 2011 19:03:05
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.67 kb
/*
 * royfloyd.c
 *
 *  Created on: Jun 17, 2011
 *      Author: mihai
 */

#include <stdio.h>
#define MAX 100
#define min(a,b) ((a<b)? a : b)

int data[MAX][MAX], dim;

int main() {

	int i, j, k;

	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);

	scanf("%d", &dim);

	for (i = 0; i < dim; i++)
		for (j = 0; j < dim; j++)
			scanf("%d", &data[i][j]);

	for (k = 0; k < dim; k++)
		for (i = 0; i < dim; i++)
			for (j = 0; j < dim; j++)
				if (i != j && data[i][k] && data[k][j])
					data[i][j] = min(data[i][j],data[i][k] + data[k][j]);

	for (i = 0; i < dim; i++, printf("\n"))
		for (j = 0; j < dim; j++)
			printf("%d ", data[i][j]);

	return 0;
}