Cod sursa(job #931799)

Utilizator xbogdanBogdan Boamfa xbogdan Data 28 martie 2013 15:00:32
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include "iostream"
#include "cstdlib"
#include "fstream"
using namespace std;
const int INF = 10001; 
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
void Read(int **&ponderi,int &nr_nod)
{	
	in >> nr_nod;
	ponderi = (int**)calloc(nr_nod,sizeof(int*));
	for (int i = 0; i < nr_nod; ++i)
		ponderi[i] = (int*)calloc(nr_nod,sizeof(int));

	for (int i = 0; i < nr_nod; ++i)
		for (int j = 0; j < nr_nod; ++j)
			in >> ponderi[i][j];
	
}
void RoyFloyd(int **ponderi,int nr_nod)
{	
	for (int i = 0; i < nr_nod; ++i)
		for (int j = 0; j < nr_nod; ++j)
			for (int k = 0; k < nr_nod; ++k)
				if (ponderi[i][j] > ponderi[i][k]+ponderi[k][j])
					ponderi[i][j] = ponderi[i][k]+ponderi[k][j];
}
void Print(int **costuri,int nr_nod)
{
	for (int i = 0; i < nr_nod; ++i) {
		for (int j = 0; j < nr_nod; ++j)
			out << costuri[i][j] << " ";
		out << "\n";
	}
}
int main(int argc, char const *argv[])
{
	int **ponderi;
	int nr_nod;
	Read(ponderi,nr_nod);
	RoyFloyd(ponderi,nr_nod);
	Print(ponderi,nr_nod);
	return 0;
}