Cod sursa(job #1971627)

Utilizator Robert29FMI Tilica Robert Robert29 Data 20 aprilie 2017 18:05:18
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
FILE*f = fopen("royfloyd.in", "r");
FILE*g = fopen("royfloyd.out", "w");


int  cost[101][101];
int main(){
	int n;
	fscanf(f, "%d", &n);
	for(int i = 1; i <= n; ++i)
	{
		for(int j = 1; j <= n; ++j)
		{
			fscanf(f, "%d", &cost[i][j]);
		}
	}


	for(int k = 1; k <= n; ++k)
	{
		for(int i = 1; i <= n; ++i)
		{
			for(int j = 1; j <= n; ++j)
			{
				if(i != j && cost[i][k] && cost[k][j] && (!cost[i][j] || (cost[i][j] > cost[i][k] + cost[k][j])))
				{
					cost[i][j] = cost[i][k] + cost[k][j];
				}
			}
		}
	}

	for(int i = 1; i <= n; ++i)
	{
		for(int j = 1; j <= n; ++j)
		{
			fprintf(g, "%d ", cost[i][j]);
		}
		fprintf(g, "\n");
	}


	fclose(f);
	fclose(g);
	return 0;
}