Cod sursa(job #2205411)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 19 mai 2018 01:02:00
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 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][2];
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);
    int prevLine = 1;
    int crtLine = 0;

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

    return 0;
}