Cod sursa(job #670914)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 30 ianuarie 2012 13:51:54
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "royfloyd.in";
const char oname[] = "royfloyd.out";

ifstream fin(iname);
ofstream fout(oname);

int n, i, a[1002][1002], j, k, rf[1002][1002];

void royfloyd()
{
	for(i = 1; i <= n; i ++)
	{
		rf[i][i] = 0;
		for(j = 1; j <= n; j ++)
			rf[i][j] = a[i][j];
	}
	
	for(k = 1; k <= n; k ++)
		for(i = 1; i <= n; i ++)
			for(j = 1; j <= n; j ++)
			{
				if(rf[i][k] && rf[k][j] && rf[i][k] + rf[k][j] < rf[i][j])
					rf[i][j] = rf[i][k] + rf[k][j];
			}
	for(i = 1; i <= n; i ++)
	{
		for(j = 1; j <= n; j ++)
			fout << rf[i][j] << " ";
		fout << "\n";
	}
}


int main()
{
	fin >> n;
	for(i = 1; i <= n; i ++)
	{
		for(j = 1; j <= n; j ++)
			fin >> a[i][j];
	}
	
	royfloyd();
	return 0;
}