Cod sursa(job #1048876)

Utilizator IgnotisIgnotis Ignotis Data 6 decembrie 2013 16:17:58
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>

int n, a[105][105];

void citire() {
	FILE *fin, *fout;
	fin = fopen( "royfloyd.in", "r" );
	fout = fopen( "roufloyd.out", "w" );

	int i, j;
	scanf("%d", &n);
	for( i = 1; i <= n; i++) 
		for (j = 1; j <= n; j++) 
			scanf("%d", &a[i][j]);
}

void floyd_warshall() {
	int i, j, k;
	for( k = 1; k <= n; k++ )
		for( i = 1; i <= n; i++ ) 
			for( j = 1; j <= n; j++ )
				if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) a[i][j] = a[i][k] + a[k][j];
}

void afisare() {
	int i, j;

	for( i = 1; i <= n; i++ ) {
		for ( j = 1; j <= n; j++ ) {
			printf( "%d ", a[i][j] );
		}
		printf("\n");
	}
}

int main() {
	citire();
	floyd_warshall();
	afisare()

	return 0;
}