Cod sursa(job #717091)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 19 martie 2012 17:37:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define N 110
#define INF 999999999

using namespace std;

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

int n,A[N][N],i,j,k;

void update(int k,int i,int j) {
    if (A[i][k]<=0 || A[k][j]<=0 || i==j) return;
    if (A[i][j]<=A[i][k]+A[k][j] && A[i][j]!=0) return;
    A[i][j]=A[i][k]+A[k][j];
}

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++)
                update(k,i,j);
    for (i=1;i<=n;i++) {
        for (j=1;j<=n;j++) g << A[i][j] << ' ';
        g << '\n';
    }
    f.close();g.close();
    return 0;
}