Cod sursa(job #1581798)

Utilizator narcischitescuNarcis Chitescu narcischitescu Data 27 ianuarie 2016 10:08:14
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

#define MAX 101
#define pb push_back
#define inf 0x3f3f3f3f

int n , m , i , x , y , z , j , k;
vector < pair < int , int > > G[MAX];
int a[MAX][MAX];

int main()
{
    f >> n;

    for ( i = 1; i <= n ; i++ )
        for ( j = 1; j <= n ; j++ )
            f >> a[i][j];

    for ( k = 1 ; k <= n ; k++ )
        for ( i = 1; i <= n ; i++ )
            for ( 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];

    for ( i = 1; i <= n ; i++ )
    {
        for ( j = 1; j <= n ; j++ )
        if ( a[i][j] == inf )
            g << -1 << " " ;
        else g << a[i][j] << " " ;
        g << "\n" ;
    }

    return 0;
}