Cod sursa(job #1599610)

Utilizator bmanghiucManghiuc Bogdan bmanghiuc Data 14 februarie 2016 01:12:34
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <cstdio>
#define NMAX 101
using namespace std;
int A[NMAX][NMAX];

int read(){
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    int N;
    cin>>N;
    for(int i = 1; i <= N; i++)
        for(int j=1; j<=N; j++){
            cin>>A[i][j];
            if(i!=j && A[i][j] == 0)
                A[i][j] = 100001;
        }
    return N;
}

void Roy_Floyd(int N){
    for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
            for(int k=1; k<=N; k++)
                if(A[i][j] > A[i][k] + A[k][j])
                    A[i][j] = A[i][k] + A[k][j];
}

void write(int N){
    for(int i=1; i<=N; i++){
        for(int j=1; j<=N; j++)
            if(A[i][j] != 100001)
                cout<<A[i][j]<<" ";
            else
                cout<<"0 ";
        cout<<'\n';
    }
}
int main()
{
    int n = read();
    Roy_Floyd(n);
    write(n);
    return 0;
}