Cod sursa(job #2078223)

Utilizator lulian23Tiganescu Iulian lulian23 Data 29 noiembrie 2017 08:44:59
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
#define nmax 123

using namespace std;

int v[ nmax ][ nmax ];
short n;

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 (v[ i ][ k ] && v[ k ][ j ] && i != j)
              if (v[ i ][ j ] > v[ i ][ k ] + v[ k ][ j ] || !v[ i ][ j ])
                v[ i ][ j ] = v[ i ][ k ] + v[ k ][ j ];
}

int main(){
    ios_base::sync_with_stdio(false);

    ifstream cin("royfloyd.in");
    ofstream cout("royfloyd.in");

    cin >> n;

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
          cin >> v[ i ][ j ];

    roy_floyd();

    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++)
          cout << v[ i ][ j ] << ' ';
        cout << '\n';
    }
}