Cod sursa(job #1456958)

Utilizator valentin50517Vozian Valentin valentin50517 Data 2 iulie 2015 14:31:26
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rf.in");
ofstream fout("rf.out");

int N,D[260][260],M[260][260],i,j,k;


int main(){
	
	fin >> N;

	for(i = 1;i<=N;i++)
		for(j = 1;j<=N;j++){
			fin >> D[i][j];
			if(D[i][j]) M[i][j] = 1;
	}
	for(k = 1;k<=N;k++)
		for(i = 1;i<=N;i++)
			for(j = 1;j<=N;j++){
				
				if(D[i][k] && D[k][j] && (D[i][j] >= D[i][k] + D[k][j] || !D[i][j]) && i!=j){
						D[i][j] = D[i][k] + D[k][j],
						M[i][j] = max(M[i][k] + M[k][j],M[i][j]);
				}
		}	
	for(i = 1;i<=N;i++){
		for(j = 1;j<=N;j++)
			fout << D[i][j] <<' ';
		fout << '\n';
	}
	
	for(i = 1;i<=N;i++){
		for(j = 1;j<=N;j++)
			fout << M[i][j] <<' ';
		fout << '\n';
	}
	return 0;
}