Cod sursa(job #2141714)

Utilizator adireusadireus adireus Data 24 februarie 2018 15:50:39
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE *infile, *outfile;
	int n, i, j, k;
	int **m;


	infile = fopen("royfloyd.in", "r");
	outfile = fopen("royfloyd.out", "w");

	fscanf(infile, "%d", &n);
	m = malloc(n * sizeof(int*));
	for (i = 0; i < n; i++)
		m[i] = malloc(n * sizeof(int));

	for(i = 0; i < n; i++)
		for(j = 0; j < n; j++)
			fscanf(infile, "%d", &m[i][j]);

	for(k = 0; k < n; k++)
		for(i = 0; i < n; i++)
			for(j = 0; j < n; j++)
				if(m[i][j] > m[i][k] + m[k][j] && m[i][k] != 0 && m[k][j] != 0)
					m[i][j] = m[i][k] + m[k][j];

	for(i = 0; i < n; i++) {
		for(j = 0; j < n; j++)
			fprintf(outfile, "%d ", m[i][j]);
		fprintf(outfile, "\n");
	}

	fclose(infile);
	fclose(outfile);

	return 0;
}