Cod sursa(job #631806)

Utilizator StefanLacheStefan Lache StefanLache Data 9 noiembrie 2011 19:51:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
using namespace std;
int n,a[100][100];
void citire()
{
	freopen("royfloyd.in","r",stdin);
	int i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			scanf("%d",&a[i][j]);
}
void constructie()
{
	int i,j,x;
	for(x=1;x<=n;x++)
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				if(a[i][x]!=0&&a[x][j]!=0&&i!=j&&(a[i][j]>a[i][x]+a[x][j]||!a[i][j]))
					a[i][j]=a[i][x]+a[x][j];
}
void afisare()
{ 
	freopen("royfloyd.out","w",stdout);
	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();
	constructie();
	afisare();
	return 0;
}