Cod sursa(job #3296570)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 13 mai 2025 20:34:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <vector>
using namespace std;

const int INF = INT_MAX / 2;

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

    int n;
    fin >> n;

    vector<vector<int>> dist(n+1, vector<int>(n+1,INF));

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) {
            fin >> dist[i][j];

            if (i == j) dist[i][j] = 0;
            else if (dist[i][j] == 0) dist[i][j] = INF;
        }

        for (int k = 1; k <= n; k++)
            for (int i = 1; i <= n; i++)
                for (int j = 1; j <= n; j++)
                    if (dist[i][j] > dist[i][k] + dist[k][j])
                        dist[i][j] = dist[i][k] + dist[k][j];

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (dist[i][j] == INF) fout << 0 << " ";
            else fout << dist[i][j] << " ";
        }
        fout << "\n";
    }

    return 0;
}