Cod sursa(job #352542)

Utilizator csizMocanu Calin csiz Data 2 octombrie 2009 10:25:52
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;

int main(){
    ifstream in("royfloyd.in");
    ofstream out("royfloyd.out");

    int m[100][100];
    int n;in>>n;
    for(int j=0;j<n;j++){
        for(int i=0;i<n;i++){
            in>>m[i][j];
        }
    }

    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++){
            for(int j=0;j<n&&j!=i;j++){
                if(m[i][k]&&m[k][j]){
                    if(!m[i][j]){
                        m[i][j]=m[i][k]+m[k][j];
                    }
                    if(m[i][j]>m[i][k]+m[k][j]){
                        m[i][j]=m[i][k]+m[k][j];
                    }
                }
            }
        }
    }
    for(int j=0;j<n;j++){
        for(int i=0;i<n;i++){
            out<<m[i][j]<<" ";
        }
        out<<"\n";
    }
}