Cod sursa(job #403735)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 25 februarie 2010 11:15:54
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#define NMAX 110
using namespace std;
int N,C[NMAX][NMAX];

#define INF 200000000

void init()
{
	int i,j;
	for(i=1;i<=N;i++)
		for(j=1;j<=N;j++)
			if (i != j) C[i][j]=INF;
	
}

void citire()
{
	FILE *fin=fopen("royfloyd.in","r");
	
	int i,j;
	
	fscanf(fin,"%d",&N);
	
	init();
	
	for(i=1;i<=N;i++)
		for(j=1;j<=N;j++)
			fscanf(fin,"%d",&C[i][j]);
}

void pd()
{
	int i,j,k;
	
	for(k=1;k<=N;k++)
		for(i=1;i<=N;i++)
			for(j=1;j<=N;j++)
			{
				if(C[i][j] > C[i][k]+C[k][j])
					C[i][j] = C[i][k]+C[k][j];
				
			}
	
}

void afisare()
{
	FILE *fout=fopen("royfloyd.out","w");
	int i,j;
	
	for(i=1;i<=N;i++)
	{
		for(j=1;j<=N;j++)
			if( C[i][j] == INF) fprintf(fout,"0 ");
			else fprintf(fout,"%d ",C[i][j]);
		fprintf(fout,"\n");
	}
}


int main()
{
	citire();
	pd();
	afisare();
}