Cod sursa(job #1095573)

Utilizator anaid96Nasue Diana anaid96 Data 31 ianuarie 2014 14:51:49
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

FILE *in,*out;

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

//variabile
int noduri;
int adiacenta[Nmax][Nmax];

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