Cod sursa(job #2208783)

Utilizator Silviu.Stancioiu@gmail.comSilviu Stancioiu [email protected] Data 31 mai 2018 15:51:55
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>

#define MAX_NODE_COUNT 105

FILE* fin;
FILE* fout;

int n;
int graphMatrix[MAX_NODE_COUNT][MAX_NODE_COUNT];

void LoadFiles()
{
	fin  = fopen("royfloyd.in", "r");
	fout = fopen("royfloyd.out", "w");
	
	return;
}

void ReadFiles()
{
	fscanf(fin, "%d", &n);

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			fscanf(fin, "%d", &graphMatrix[i][j]);
		}
	}

	return;
}

void RoyFloyd()
{
	for (int k = 0; k < n; k++)
	{
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (i != j && i != k)
				{
					int newSum = graphMatrix[i][k] + graphMatrix[k][j];
					
					if (graphMatrix[i][j] == 0)
					{
						graphMatrix[i][j] = newSum;
					}
					else
					{
						if (newSum < graphMatrix[i][j])
						{
							graphMatrix[i][j] = newSum;
						}
					}
				}
			}
		}
	}

	return;
}

void Write()
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			fprintf(fout, "%d ", graphMatrix[i][j]);
		}
		fprintf(fout, "\n");
	}

	return;
}

void CloseFiles()
{
	fclose(fin);
	fclose(fout);

	return;
}

int main(void)
{
	LoadFiles();
	ReadFiles();

	RoyFloyd();
	Write();

	CloseFiles();

	return 0;
}