Cod sursa(job #143935)

Utilizator mithyPopovici Adrian mithy Data 26 februarie 2008 22:48:58
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#define NMax 101

int n;
int a[NMax][NMax];

void citire();
void rez();
void afis();


int main()
{
	citire();
	rez();
	afis();
	return 0;
}
void afis()
{
	int i, j;

	for (i=1; i<=n; i++)
	{
		for (j=1; j<=n; j++)
			printf( "%d ", a[i][j] );
		printf( "\n" );
	}
}
void rez()
{
	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 citire()
{
	int i, j;

	freopen( "royfloyd.in", "rt", stdin );
	freopen( "royfloyd.out", "wt" , stdout );
	
	scanf( "%d", &n );
	for (i=1; i<=n; i++)
	for (j=1; j<=n; j++)
		scanf( "%d", &a[i][j] );
}