Cod sursa(job #2812110)

Utilizator linte_robertLinte Robert linte_robert Data 3 decembrie 2021 23:18:32
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <utility>
#include <queue>
using namespace std;

void roy_floyd(int n, int a[105][105]){
    for( int k = 1; k < n; k++ ){
        for( int i = 1; i <= n; i++ ){
            for( int j = 1; j <= n; j++ ){
                if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) a[i][j] = a[i][k] + a[k][j];
            }
        }
    }
}

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

    int a[105][105], n;

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

    roy_floyd(n,a);

    for( int i = 1; i <= n; i++ ){
        for( int j = 1; j <= n; j++ ){
            fout << a[i][j] << " ";
        }
        fout << "\n";
    }
}