Cod sursa(job #352871)

Utilizator bogdanacmDrutu Bogdan bogdanacm Data 3 octombrie 2009 17:03:42
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
#include <cstring>
#include <algorithm>


using namespace std;

#define INF 0x0F0F0F0F
#define MAXN 105

int A[MAXN][MAXN],N;

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


int main ()
{
	int i,j,k;
	freopen("royfloyd.in","rt",stdin);
//	freopen("royfloyd.out","wt",stdout);

	memset(A,0x0F,sizeof(A));

	scanf("%d",&N);
	for (i=0;i<N;i++)
		for(j=0;j<N;j++)
		{
			scanf("%d",A[i]+j);
			if (!A[i][j])
				A[i][j] = INF;
		}
	royfloyd();
	
	for (i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			if (A[i][j] == INF || i == j)
				A[i][j] = 0;
			printf("%d ",A[i][j]);
		}
		printf("\n");
	}
	
	return 0;	
}