Cod sursa(job #3257788)

Utilizator Luca07Nicolae Luca Luca07 Data 19 noiembrie 2024 15:20:16
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include<vector>
using namespace std;

ifstream cin("royfloyd.in");
ofstream cout("royfloyd.out");

vector<vector<int>> vmat;

int main()
{
    int i, j,k, n, nr;

    cin >> n;
    vmat = vector < vector<int>>(n + 1, vector<int>(n + 1));
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            cin >> vmat[i][j];
            if (vmat[i][j] == 0&&i!=j) {
                vmat[i][j] = INT32_MAX;
            }
        }
    }


    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < n; k++) {
                if (vmat[i][j] != INT32_MAX && vmat[j][k] != INT32_MAX && vmat[i][j] + vmat[j][k] < vmat[i][k]) {
                    vmat[i][k] = vmat[i][j] + vmat[j][k];
                }
            }
        }
    }

    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (vmat[i][j] == INT32_MAX) {
                vmat[i][j] = 0;
            }
            cout << vmat[i][j]<<" ";
        }
        cout << "\n";
    }

    return 0;
}