Cod sursa(job #2633886)

Utilizator irimia_alexIrimia Alex irimia_alex Data 9 iulie 2020 00:55:37
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <iostream>
#define NMAX 100
#define INF 1e9

using namespace std;

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

int fw[NMAX][NMAX];

void read(int v[NMAX][NMAX], int& n) {
    fin >> n;
    for (int i = 0;i < n;++i)
        for (int j = 0;j < n;++j)
            fin >> v[i][j];
}

void init(int v[NMAX][NMAX],int n) {
    for (int i = 0;i < n;++i)
        for (int j = 0;j < n;++j)
            if (v[i][j] == 0)
                fw[i][j] = INF;
            else
                fw[i][j] = v[i][j];
}

void floyd_warshall(int n) {
    for (int k = 0;k < n;++k)
        for (int i = 0;i < n;++i)
            for (int j = 0;j < n;++j)
                if (fw[i][j] > fw[i][k] + fw[k][j])
                    fw[i][j] = fw[i][k] + fw[k][j];
    for (int i = 0;i < n;++i) {
        for (int j = 0;j < n;++j)
            fout << fw[i][j] << ' ';
        cout << '\n';
    }
}

int main()
{
    int n, v[NMAX][NMAX];
    read(v, n);
    init(v, n);
    floyd_warshall(n);

    return 0;
}