Cod sursa(job #3336793)

Utilizator petru-robuRobu Petru petru-robu Data 25 ianuarie 2026 21:46:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
#define inf INT_MAX
using namespace std;

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

vector<vector<int>> adj_matrix;
vector<vector<int>> dist;
int n;

void read()
{
    fin >> n;
    adj_matrix.assign(n + 2, vector<int>(n + 2, 0));
    dist.assign(n + 2, vector<int>(n + 2, inf));

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
        {
            fin >> adj_matrix[i][j];
            if (i == j)
                dist[i][j] = 0;
            else if (adj_matrix[i][j] != 0)
                dist[i][j] = adj_matrix[i][j];
        }
}

void roy_floyd()
{
    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                if (dist[i][k] < inf && dist[k][j] < inf && 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';
    }
}

int main()
{
    read();
    roy_floyd();
    return 0;
}