Cod sursa(job #2425825)

Utilizator denisaaaelenaStirbu Denisa denisaaaelena Data 25 mai 2019 07:14:57
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <fstream>

#define MAX 5000
using namespace std;

int n, a[105][105];

ifstream f("rf.in");
ofstream g("rf.out");

void citire() {
    int i, j;
    f >> n;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            f >> a[i][j];
    f.close();
}

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

void afisare() {#include <iostream>
#include <fstream>
using namespace std;
int m[101][101], n;
ifstream in("rf.in");
ofstream out("rfl.out");
int main()
{
	in >> n;

	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			in >> m[i][j];

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

	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
			out << m[i][j] << " ";

		out << '\n';
	}

	return 0;
}
    for (int i = 1; i <= n; i++) {
        for (int j =1; j <= n; j++)
            if (a[i][j] < MAX)
                g << a[i][j] << " ";
        g<< endl;
    }
}

int main() {
    citire();
    royfloyd();
    afisare();
    g.close();
}