Cod sursa(job #3325469)

Utilizator VictorCaloVictor Calomfirescu VictorCalo Data 25 noiembrie 2025 15:19:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

int mat[101][101];
const int INF = 1000000005;
int N;
vector<vector<int>> D;

int main()
{
    fin >> N;
    D.resize(N, vector<int>(N, INF));

    for (int a = 0; a < N; a++)
    {
        for (int b = 0; b < N; b++)
        {
            fin >> mat[a][b];
        }
    }

    for (int a = 0; a < N; a++)
    {
        for (int b = 0; b < N; b++)
        {
            if (mat[a][b] == 0 && a != b)
                D[a][b] = INF;
            else
                D[a][b] = mat[a][b];
        }
    }

    for (int k = 0; k < N; k++)
    {
        for (int a = 0; a < N; a++)
        {
            for (int b = 0; b < N; b++)
            {
                if (D[a][k] + D[k][b] < D[a][b])
                {
                    D[a][b] = D[a][k] + D[k][b];
                }
            }
        }
    }

    for (int a = 0; a < N; a++)
    {
        for (int b = 0; b < N; b++)
        {
            if (D[a][b] == INF) fout << 0 << " ";
            else fout << D[a][b] << " ";
        }
        fout << "\n";
    }

    return 0;
}