Cod sursa(job #1022010)

Utilizator danny794Dan Danaila danny794 Data 4 noiembrie 2013 16:28:53
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

void solve(int** matrix, int N){
	for(int k = 1; k <= N; k++){
		for(int i = 1; i <= N; i++){
			for(int j = 1; j <= N; j++){
				int sum = matrix[i][k] + matrix[k][j];
				if (matrix[i][k] != 0 && matrix[k][j] != 0 && i != j && (sum < matrix[i][j] || matrix[i][j] == 0)){
					matrix[i][j] = sum;
				}
			}
		}
	}
}

int main() {
	int** matrix;
	int N, i, j;
	f >> N;
	matrix = new int*[N+1];
	for (i = 1; i <= N; i++){
		matrix[i] = new int[N+1];
		for(j = 1; j <= N; j++){
			f >> matrix[i][j];
		}
	}

	solve(matrix, N);

	for (i = 1; i <= N; i++){
		for(j = 1; j <= N; j++){
			g << matrix[i][j] << " ";
		}
		g << '\n';
	}

	for (i = 1; i <= N; i++)
		delete [] matrix[i];

	delete [] matrix;
	f.close();
	g.close();
	return 0;
}