Cod sursa(job #562031)

Utilizator AdamSVlad Adam AdamS Data 22 martie 2011 10:05:25
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
#define input "royfloyd.in"
#define output "royfloyd.out"
#define NMAX 101
int n;
int g[NMAX][NMAX];
void open()
{
	freopen(input,"r",stdin);
	freopen(output,"w",stdout);
}
void read()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			scanf("%d",&g[i][j]);
}

void royfloyd()
{
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(g[i][k]&&g[k][j]&&(g[i][k]+g[k][j]<g[i][j]||!g[i][j])&&i!=j)
					g[i][j]=g[i][k]+g[k][j];
}

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

int main()
{
	open();
	read();
	royfloyd();
	a_fish();
	return 0;
}