Cod sursa(job #894074)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 26 februarie 2013 19:33:47
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define nmax 110
using namespace std;

int N,D[nmax][nmax];

void solve() {

    int i,j,k;

    for(k=1;k<=N;k++)
        for(i=1;i<=N;i++)
            for(j=1;j<=N;j++)
                if(i!=j && i!=k && j!=k && (D[i][j]>D[i][k]+D[k][j] || !D[i][j]) )
                    D[i][j]=D[i][k]+D[k][j];

}
void read() {

    int i,j;
    ifstream in("royfloyd.in");
    in>>N;

    for(i=1;i<=N;i++)
        for(j=1;j<=N;j++)
            in>>D[i][j];

    in.close();

}
void write() {

    int i,j;
    ofstream out("royfloyd.out");

    for(i=1;i<=N;i++)
        for(j=1;j<=N;j++)
            out<<D[i][j]<<(j==N?'\n':' ');

    out.close();

}
int main() {

    read();
    solve();
    write();

    return 0;

}