Cod sursa(job #2814015)

Utilizator RoberttoPopescu Paullo Robertto Karloss Robertto Data 7 decembrie 2021 13:20:35
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector<vector<int>> royFloyd(vector<vector<int>> &matrice, int &n) {
    vector<vector<int>> distante = matrice;
    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                if (distante[i][j] > distante[i][k] + distante[k][j]) {
                    distante[i][j] = distante[i][k] + distante[k][j];
                }
    return distante;
}

int main() {
    vector<vector<int>> matrice;
    int n;
    fin >> n;
    matrice.resize(n + 1);
    for (int i = 1; i <= n; i++) {
        matrice[i].resize(n + 1);
        for (int j = 1; j <= n; j++) {
            int cost;
            fin >> cost;
            matrice[i][j] = cost;
        }
    }
    vector<vector<int>> distante;
    distante = royFloyd(matrice, n);
    for (int i = 1; i < distante.size(); i++) {
        for (int j = 1; j < distante.size(); j++)
            fout << distante[i][j] << " ";
        fout << "\n";
    }
    return 0;
}