Cod sursa(job #492317)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 14 octombrie 2010 08:56:33
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#define inf 200000000
using namespace std;
FILE *f=fopen("royfloyd.in","r");
FILE *g=fopen("royfloyd.out","w");
int cost[101][101],i,j,k,n;
int min (int a,int b){
	if(a<b)
		return a;
	return b;
}

void citire(){
	 fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++){
	  fscanf(f,"%d",&k);
	  if(k!=0)
		  cost[i][j]=k;
	  else cost[i][j]=inf;
  }
	
}

void solve(){
for(k=1;k<=n;k++)
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(i!=j)
			cost[i][j]=min(cost[i][j], cost[i][k]+cost[k][j]);
}

void afis(){
	for(i=1;i<=n;i++){
   for(j=1;j<=n;j++)
	   if(cost[i][j]!=inf)
	   fprintf(g,"%d ",cost[i][j]);
	   else fprintf(g,"0 ");
   fprintf(g,"\n");
}
}
int main(){
	citire();
	solve();
	afis();
return 0;
}