Cod sursa(job #3336501)

Utilizator emilianvatavucristianEmilian Vatavu Cristian emilianvatavucristian Data 24 ianuarie 2026 20:21:33
Problema Arbore partial de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

const int N = 101;
int n;
int d[N][N], p[N][N], w[N][N];

int main()
{
	fin >> n;
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= n; ++j)
		{
			int c;
			fin >> c;
			if (c != 0)
			{
				w[i][j] = c;
				p[i][j] = i;
			}
			else
			{
				w[i][j] = INT_MAX;
				p[i][j] = 0;
			}
			if (i == j)
			{
				d[i][j] = 0;
			}
			else
			{
				d[i][j] = w[i][j];
			}
		}
	}

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

	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= n; ++j)
		{
			fout << d[i][j] << ' ';
		}
		fout << '\n';
	}

	fin.close();
	fout.close();
	return 0;
}