Cod sursa(job #1415028)

Utilizator Anonymous1010Chilivercu Cristian Anonymous1010 Data 3 aprilie 2015 16:17:47
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>

#define N 100
#define INF 1001

void use_node(int k, int n, int a[][N])
{
	int i, j;

	for(i = 0; i < n; i++)
		for(j = 0; j < n; j++)
			if(a[i][j] > a[i][k] + a[k][j])
				a[i][j] = a[i][k] + a[k][j];
}

int main(void)
{
	int a[N][N];
	int i, j, k;
	int n;

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

	scanf("%d", &n);

	for(i = 0; i < n; i++)
		for(j = 0; j < n; j++)
		{
			scanf("%d", &a[i][j]);
			if(a[i][j] == 0 && i != j)
				a[i][j] = INF;
		}
	
	for(k = 0; k < n; k++)
		use_node(k, n, a);

	for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
			if(a[i][j] == INF)
				printf("0 ");
			else
				printf("%d ", a[i][j]);
		printf("\n");
	}

	return 0;
}