Cod sursa(job #1130216)

Utilizator anaid96Nasue Diana anaid96 Data 28 februarie 2014 11:54:59
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>

FILE *in,*out;

//constante
const int Nmax=101;
const int oo=(1<<30)-1;

//variabile
int n;
int cost[Nmax][Nmax];

int main(void)
{
	in=fopen("royfloyd.in","rt");
	out=fopen("royfloyd.out","wt");
	
	fscanf(in,"%d",&n);
	for(int i=1 ; i<=n ; ++i)
	{
		for(int j=1 ; j<=n ; ++j)
		{
			fscanf(in,"%d",&cost[i][j]);
			if(!cost[i][j] && i!=j) 
				cost[i][j]=oo;
		}
	}
	
	for(int k=1 ; k<=n ; ++k)
	{
		for(int i=1 ; i<=n ; ++i)
		{	
			if(k == i)
				continue;
			for(int j=1 ; j<=n ; ++j)
			{
				
			if(k == j)
				continue;
				if(i == j)
					continue;
				
				if(cost[i][j] > cost[i][k] + cost[k][j])
						cost[i][j] = cost[i][k] + cost[k][j];
			}	
		}		
	}
	for(int i=1 ; i<=n ; ++i)
	{
		for(int j=1 ; j<=n ; ++j)
		{
			if(cost[i][j]==oo)
				fprintf(out,"0");
			else
				fprintf(out,"%d ",cost[i][j]);
		}
		fprintf(out,"\n");
	}
	
	fclose(in);
	fclose(out);
	return 0;
}