Cod sursa(job #526542)

Utilizator Gaby_mMititelu Gabriel Gaby_m Data 28 ianuarie 2011 16:47:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>

using namespace std;
int n;
int matad[100][100];


void royfloyd() {
	int i,j,k;
	for (k = 0; k < n; k++)
		for (i = 0; i < n; i++) 
			for (j = 0; j < n; j++){
				if ((i!=j)&&(matad[i][k])&&(matad[k][j])
					&&((!matad[i][j])||matad[i][j] > matad[i][k] + matad[k][j])) {
					matad[i][j] = matad[i][k] + matad[k][j];
				}				
			}
	
}

void printMatrix() {
	int i,j;
	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++)
			printf("%d ",matad[i][j]);

		printf("\n");
	}
}

int main() {

	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);

	scanf("%d\n", &n);
	int i,j;

	for (i = 0; i < n; i++) 
		for (j = 0; j < n; j++)
			scanf("%d",&matad[i][j]);

	royfloyd();
	printMatrix();
	

	return 0;
}