Cod sursa(job #2645362)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 27 august 2020 22:29:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>

using namespace std;

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

	int n, i, j, k;

	scanf("%d", &n);

	int distances[n+1][n+1];

	for(i=0; i<=n; ++i)
		for(j=0; j<=n; ++j)
			distances[i][j] = 0;


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


    for(j=1; j<=n; ++j)
        for(i=1; i<=n; ++i)
			for(k=1; k<=n; ++k)
				if (i!=k)
					if (distances[i][j] && distances[j][k])
						if (distances[i][j] + distances[j][k] < distances[i][k] || distances[i][k] == 0)
							distances[i][k] = distances[i][j] + distances[j][k];

	for(i=1;i<=n; ++i) {
		for(j=1; j<=n; ++j)
			printf("%d ", distances[i][j]);

		printf("\n");
	}

	return 0;
}