Cod sursa(job #655443)

Utilizator noobakafloFlorin eu noobakaflo Data 2 ianuarie 2012 16:38:59
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<fstream>
using namespace std;

fstream g("royfloyd.out",ios::out);

void Citeste(int &n,int A[101][101])
{
	int i,j;
	fstream f("royfloyd.in",ios::in);
	f>>n;
	for(i=1; i<=n; i++)
		for(j=1; j<=n; j++)
			f>>A[i][j];
	f.close();
}

void Roy_Floyd(int n,int A[101][101])
{
	int k,i,j;
	for(k=1; k<=n; k++)
		for(i=1; i<=n; i++)
			for(j=1; j<=n; j++)
				if(A[i][k]!=0 && A[k][j]!=0 && (A[i][j]>A[i][k]+A[k][j] || A[i][j]==0))
					A[i][j]=A[i][k]+A[k][j];
}

void Afiseaza(int n,int A[101][101])
{
	
	int i,j;
	fstream g("royfloyd.out",ios::out);
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
			g<<A[i][j]<<" ";
		g<<"\n";
	}
	g.close();
}


int main()
{
	int n,A[101][101];
	Citeste(n,A);
	Roy_Floyd(n,A);
	Afiseaza(n,A);
	return 0;
}