Cod sursa(job #1533088)

Utilizator PaulCbnCiobanu Paul PaulCbn Data 22 noiembrie 2015 00:18:28
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <cstdio>

using namespace std;

int M[110][110],N;



int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    scanf("%d",&N);

    for(int i=1; i<=N; i++)
    {
        for(int j=1; j<=N; j++)
        {

            scanf("%d",&M[i][j]);

        }

    }

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


    for(int i=1; i<=N; i++)
    {
        for(int j=1; j<=N; j++)
        {
            printf("%d ",M[i][j]);
        }
        printf("\n");
    }
    return 0;
}