Cod sursa(job #2205410)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 19 mai 2018 00:59:32
Problema Floyd-Warshall/Roy-Floyd Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream in("royfloyd.in");
//ofstream out("royfloyd.out");

const int N = 101;
const int INF = 1001;
int d[N][N][N];
int n;

void afis(int k){
    for(int i=1; i<=n; ++i){
        for(int j=1; j<=n; ++j)
            cout<<d[i][j][k]<<" ";
        cout<<"\n";
    }
    cout<<"\n";
}

int main()
{
    freopen("royfloyd.out","w",stdout);
    in>>n;
    for(int i=1; i<=n; ++i)
        for(int j=1; j<=n; ++j)
            in>>d[i][j][0];

    for(int i=1; i<=n; ++i)
        for(int j=1; j<=n; ++j)
            if(d[i][j][0] == 0 && i != j)
                d[i][j][0] = INF;

    //afis(0);

    for(int k=1; k<=n; ++k){
        for(int i=1; i<=n; ++i)
            for(int j=1; j<=n; ++j)
                d[i][j][k] = min(d[i][j][k-1], d[i][k][k-1] + d[k][j][k-1]);
        //afis(k);
    }
    afis(n);

    return 0;
}