Cod sursa(job #1103870)

Utilizator breta.ionutBreta Ionut breta.ionut Data 10 februarie 2014 00:28:49
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;

int main() {
	ifstream in("royfloyd.in");
	ofstream out("royfloyd.out");
	int n, i, j, k, **g;

	in>>n;
	g = new int*[n];
	for (i = 0 ; i < n ; i ++) {
		g[i] = new int[n];
		for (j = 0 ; j < n ; j ++) {
			in>>g[i][j];
		}
	}

	for (k = 0 ; k < n ; k ++)
		for (i = 0 ; i < n ; i ++)
			for (j = 0 ; j < n ; j ++)
				if (g[i][k] != 0 && g[k][j] != 0) {
					if (g[i][j] != 0) {
						if (g[i][j] > g[i][k] + g[k][j])
							g[i][j] = g[i][k] + g[k][j];
					}
					else if (i != j) g[i][j] = g[i][k] + g[k][j];
				}
			
	for (i = 0 ; i < n ; i ++) {
		for (j = 0 ; j < n ; j ++)
			out<<g[i][j]<<" ";
		out<<"\n";
	}

	in.close();
	out.close();

	return 0;
}