Cod sursa(job #2859331)

Utilizator XyanEusebiu Pusca Xyan Data 1 martie 2022 10:36:35
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int NMAX = 102;
int m[NMAX][NMAX], rf[NMAX][NMAX], N;

int w(int x, int y, int k)
{
    if(!k)
        return m[x][y];
    return min((rf[x][y] ? rf[x][y] : w(x, y, k - 1)),
               (rf[x][k] ? rf[x][k] : w(x, k, k - 1)) +
                (rf[k][y] ? rf[k][y] : w(k, y, k - 1)));
}

int main()
{
    fin>>N;
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= N; j++)
            fin>>m[i][j];
    for(int i = 1; i <= N; i++)
    {
        for(int j = 1; j <= N; j++)
        {
            if(i == j) continue;
            rf[i][j] = w(i, j, N);
        }
    }
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= N; j++)
            fout << rf[i][j] << " ";
        fout<<endl;
    }
    return 0;
}