Cod sursa(job #1122613)

Utilizator andreiseiceanSeicean Andrei andreiseicean Data 25 februarie 2014 19:16:03
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;

ifstream f("royfloyd.in"); ofstream g("royfloyd.out");
short a[1002][1002],n;

void citire(){
int i,j;
f>>n;
for (i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
}

void royfloyd(){
int i,j,p;
for (i=1;i<=n;i++)
    for (j=1;j<=n;j++)
        for (p=1;p<=n;p++)
            if (a[i][p] && a[p][j] && (a[i][j] > a[i][p] + a[p][j] || !a[i][j]) && i != j) a[i][j] = a[i][p] + a[p][j];
}

void afisare(){
int i,j;
for (i=1;i<=n;i++){
    for(j=1;j<=n;j++)
        g<<a[i][j]<<' ';
    g<<'\n';
    }
}

int main(){
citire();
royfloyd();
afisare();
}