Cod sursa(job #2218663)

Utilizator HumikoPostu Alexandru Humiko Data 5 iulie 2018 13:02:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

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

int dist[105][105];
int n;

int main()
{
    fin>>n;
    for ( int i = 1; i <= n; ++i )
        for ( int j = 1; j <= n; ++j )
            fin>>dist[i][j];
    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] && dist[k][j] && i != j )
                    if ( dist[i][j] )
                        dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j]);
                    else
                        dist[i][j] = dist[i][k]+dist[k][j];
    for ( int i = 1; i <= n; ++i )
    {
        for ( int j = 1; j <= n; ++j )
            fout<<dist[i][j]<<" ";
        fout<<'\n';
    }
}