Cod sursa(job #832966)

Utilizator Brz_VladBrezae Vlad Brz_Vlad Data 11 decembrie 2012 19:00:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>

int M[100][100];
int i,j,k,n;

#define MAXINT 10000000

int main(int argc, char* argv[])
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    
    scanf("%d",&n);
	for(i=0;i<n;i++)
	  for(j=0;j<n;j++){
		scanf("%d",&M[i][j]);
		if(M[i][j] == 0 )
			M[i][j] = MAXINT;
	  }

	for(k=0;k<n;k++)
	  for(i=0;i<n;i++)
	    for(j=0;j<n;j++){
	      if( i != j && M[i][j] > (M[i][k] + M[k][j]) )
			M[i][j] = M[i][k] + M[k][j];
		}

	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(M[i][j] == MAXINT)
				printf("0 ");
			else
				printf("%d ",M[i][j]);
		}
		
		printf("\n");
	}
	
    return 0;
}