Cod sursa(job #2377335)

Utilizator stratonedanielDaniel Stratone stratonedaniel Data 9 martie 2019 19:50:25
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE *read = fopen("royfloyd.in", "r");
	FILE *write = fopen("royfloyd.out", "w");

	int number_of_vertices;

	fscanf(read, "%d", &number_of_vertices);

	int **adjacency_matrix = (int**) calloc(number_of_vertices, sizeof(int*));

	for(int i = 0; i < number_of_vertices; i++)
		adjacency_matrix[i] = (int*) calloc(number_of_vertices, sizeof(int));


	for(int i = 0; i < number_of_vertices; i++)
		for(int j = 0; j < number_of_vertices; j++)
		{
			fscanf(read, "%d", &adjacency_matrix[i][j]);
		
			if (i != j && adjacency_matrix[i][j] == 0)
				adjacency_matrix[i][j] = 100000;

		}

	for (int i = 0; i < number_of_vertices; i++)
		for (int j = 0; j < number_of_vertices; j++)
			for (int k = 0; k < number_of_vertices; k++)
				if (adjacency_matrix[i][k] > adjacency_matrix[i][j] + adjacency_matrix[j][k])
					adjacency_matrix[i][k] = adjacency_matrix[i][j] + adjacency_matrix[j][k];
			
	for (int i = 0; i < number_of_vertices; i++)
	{
		for (int j = 0; j < number_of_vertices; j++)
			fprintf(write, "%d ", adjacency_matrix[i][j]);

		fprintf(write, "\n");
	}

	for(int i = 0; i < number_of_vertices; i++)
		free(adjacency_matrix[i]);
	free(adjacency_matrix);

	fclose(read);
	fclose(write);	

	return 0;
}