Cod sursa(job #1408268)

Utilizator BaTDucKMocanu George BaTDucK Data 29 martie 2015 22:33:24
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>

#define Nmax 105
#define INF 1 << 30
using namespace std;

int Cost[Nmax][Nmax], N;

void Read()
{
    freopen("royfloyd.in", "r", stdin);
    scanf("%d", &N);
    for(int i = 1; i <= N; ++ i)
        for(int j = 1; j <= N;  ++ j)
            scanf("%d", &Cost[i][j]);
}

void Write()
{
    freopen("royfloyd.out", "w", stdout);
    for(int i = 1; i <= N; printf("\n"), ++ i)
        for(int  j = 1; j <= N; ++ j)
            printf("%d ", Cost[i][j]);
}

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

int main()
{
    Read();
    Do_Roy_Floyd();
    Write();
    return 0;
}