Cod sursa(job #165200)

Utilizator raduzerRadu Zernoveanu raduzer Data 25 martie 2008 18:03:57
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>

int n,c[110][110];

int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    scanf("%d",&n);
    int i,j,k;
    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=n; ++j)
        {
            scanf("%d",&c[i][j]);
            if (c[i][j]==0 && i!=j) c[i][j]=0x3f3f3f3f;
        }
    }
    for (k=1; k<=n; ++k)
    {
        for (i=1; i<=n; ++i)
        {
            if (i==k) continue;
            for (j=1; j<=n; ++j)
            {
                if (c[i][j]>c[i][k]+c[k][j]) c[i][j]=c[i][k]+c[k][j];
            }
        }
    }
    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=n; ++j) { if (c[i][j]==0x3f3f3f3f) c[i][j]=0;printf("%d ",c[i][j]); }
        printf("\n");
    }
    return 0;
}