Cod sursa(job #2375718)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 8 martie 2019 11:44:00
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int INF = 1e9;

int main()
{
    int n;
    fin >> n;
    vector <vector <int>> ad(n, vector <int>(n)), d(n, vector <int>(n, INF));
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++){
            fin >> ad[i][j];
            if(ad[i][j] == 0)
                ad[i][j] = INF;
            if(i != j)
                d[i][j] = ad[i][j];
        }
    for(int k = 0; k < n; k++)
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                if(i != j && d[i][j] > d[i][k] + d[k][j])
                    d[i][j] = d[i][k] + d[k][j];
    for(auto lin : d){
        for(auto e : lin){
            if(e < INF)
                fout << e << ' ';
            else
                fout << "0 ";
        }
        fout << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}