Cod sursa(job #1690928)

Utilizator andreilucaLuca Andrei andreiluca Data 16 aprilie 2016 12:05:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NMAX 101

using namespace std;
FILE *in, *out;
int dim;
int INF = 0x3f3f3f3f;
int graph[NMAX][NMAX];
int n;
//int min1[NMAX][NMAX];
void roy_floyd();
void read();
void afisare();
int main()
{
	in = fopen("royfloyd.in", "r");
	out = fopen("royfloyd.out", "w");
	read();
	roy_floyd();
	afisare();
	return 0;
}
void read()
{
	fscanf(in, "%d", &n);
	int x;
	for (int i = 0; i < n; i++)
	for (int j = 0; j < n; j++)
	{
		fscanf(in, "%d", &x);
		graph[i][j] = x;
		if (graph[i][j] == 0 && i != j)
			graph[i][j] = INF;
	}
}
void roy_floyd()
{
	int i, j, k;
	for (k = 0; k < n;k++)
		for (i = 0; i < n;i++)
			for (j = 0; j < n; j++)
			{
				if (i != j&&graph[i][j]>graph[i][k] + graph[k][j] && graph[i][k] != INF && graph[k][j] != INF)
				{
					graph[i][j] = graph[i][k] + graph[k][j];
				}
			}
}
void afisare()
{
	int i=0, j=0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			fprintf(out,"%d ", graph[i][j]);
		}
		fprintf(out, "\n");
	}
}