Cod sursa(job #3001444)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 13 martie 2023 17:35:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <cstdio>
#include <cmath>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <bitset>
#include <map>
#include <cstring>
#include <algorithm>

#define NMAX 103
using namespace std;

FILE* fin, * fout;

int n;
int dist[NMAX][NMAX];

int main()
{
	fin = fopen("royfloyd.in", "r");
	fout = fopen("royfloyd.out", "w");
	
	fscanf(fin, "%d", &n);
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			fscanf(fin, "%d", &dist[i][j]);
			if (dist[i][j] == 0)
			{
				dist[i][j] = INT_MAX;
			}
		}
	}

	for (int aux = 1; aux <= n; aux++)
	{
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= n; j++)
			{
				if (dist[i][aux] != INT_MAX && dist[aux][j] != INT_MAX && i!=j)
				{
					dist[i][j] = min(dist[i][j], dist[i][aux] + dist[aux][j]);
				}
			}
		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (dist[i][j] == INT_MAX)
			{
				dist[i][j] = 0;
			}
			fprintf(fout, "%d ", dist[i][j]);
		}
		fprintf(fout, "\n");
	}
	return 0;
}