Cod sursa(job #308747)

Utilizator ovy2906Popescu Ovidiu ovy2906 Data 28 aprilie 2009 13:29:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<stdio.h>
const int N=101;
const int inf=1000000000;
int a[N][N],pred[N][N],n;
void citire();
void calcul();
void drum(int,int);
int main(){
	int i,j;
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	citire();
	calcul();
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
	return 0;
}
void citire(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			scanf("%d",&a[i][j]);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(i!=j && a[i][j]==0)
				a[i][j]=inf;
	/*	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(i==j)
				a[i][i]=0;
			else 
				a[i][j]=inf;
	*/
	
}
void calcul(){
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(a[i][k]+a[k][j]<a[i][j]){
					a[i][j]=a[i][k]+a[k][j];
					pred[i][j]=pred[k][j];
				}
}