Cod sursa(job #672200)

Utilizator noobakafloFlorin eu noobakaflo Data 1 februarie 2012 18:42:33
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<limits.h>
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define MAX_N 101

int n,C[MAX_N][MAX_N];

void Init(void)
{
	int i,j;
	for(i=1; i<=MAX_N; i++)
		for(j=1; j<=MAX_N; j++)
			C[i][j]=LONG_MIN;
}


void Citeste(void)
{
	freopen("royfloyd.in","r",stdin);
	scanf("%d",&n);
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++)
			scanf("%d",&C[i][j]);
}

void Roy_Warshall(void)
{
	int k,i,j;
	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 Afiseaza(void)
{
	freopen("royfloyd.out","w",stdout);
	int i,j;
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
			if(C[i][j]==LONG_MIN)
				printf("0 ");
			else
				printf("%d ",C[i][j]);
		printf("\n");
	}
}


int main()
{

	Init();		
	Citeste();
	Roy_Warshall();
	Afiseaza();
	return 0;
}