Cod sursa(job #2198484)

Utilizator paulstelian97Olaru Paul-Stelian paulstelian97 Data 24 aprilie 2018 15:46:14
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
using namespace std;

int N;
int adj[101][101];
int dist[101][101];

void reader() {
	ifstream fin("royfloyd.in");
	fin >> N;
	for (int i = 1; i <= N; i++)
		for (int j = 1; j <= N; j++) {
		fin >> adj[i][j];
		dist[i][j] = adj[i][j];
		if (dist[i][j] == 0 && i != j) dist[i][j] = -1;
	}
}

void alg() {
	for (int k = 1; k <= N; k++) {
		for (int i = 1; i <= N; i++) {
			for (int j = 1; j <= N; j++) {
				int d1 = dist[i][j];
				int d2 = dist[i][k] + dist[k][j];
				if (d1 == -1 || d2 < d1) dist[i][j] = d2;
			}
		}
	}
	for (int i = 1; i <= N; i++) dist[i][i] = 0;
}

void writer() {
	ofstream fout("royfloyd.out");
	for (int i = 1; i <= N; i++) {
		for (int j = 1; j < N; j++) fout << dist[i][j] << ' ';
		fout << dist[i][N] << '\n';
	}
}

int main() { reader(); alg(); writer(); }