Cod sursa(job #3271958)

Utilizator ShAwDoRneYNacu Gabriel ShAwDoRneY Data 27 ianuarie 2025 21:38:38
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <vector>

using namespace std;

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

void Floyd_Warshall(int noNodes, vector<vector<int> > &arr) {

    for(int k=1; k<=noNodes; k++) {
        for(int i=1; i<=noNodes; i++) {
            for(int j=1; j<=noNodes; j++) {
                
                if(i == j)
                    continue;

                if(arr[i][k] && arr[k][j]) {
                    arr[i][j] = min(arr[i][j], arr[i][k]+arr[k][j]);
                    if(arr[i][j] == 0)
                        arr[i][j] = arr[i][k] + arr[k][j];
                }
            }
        }
    }
}

int main() {

    int noNodes;

    fin >> noNodes;

    vector<vector<int> > arr(noNodes+1, vector<int>(noNodes+1));

    for(int i=1; i<=noNodes; i++) {
        for(int j=1; j<=noNodes; j++) {
            fin >> arr[i][j];
        }
    }

    Floyd_Warshall(noNodes, arr);

    for(int i=1; i<=noNodes; i++) {
        for(int j=1; j<=noNodes; j++) {
            fout << arr[i][j] << ' ';
        }
        fout << endl;
    }

    return 0;
}