Cod sursa(job #1110903)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 18 februarie 2014 14:37:39
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<cstdio>

using namespace std;

const int NMAX = 100+2;

int N;
int M[NMAX][NMAX];

int main()
{
    int i,j,k;

    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);

    scanf("%d",&N);

    for(i=1; i<=N; i++)
        for(j=1; j<=N; j++)
            scanf("%d",&M[i][j]);

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

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

    return 0;
}