Cod sursa(job #2707974)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 18 februarie 2021 08:36:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
//Ilie Dumitru
#include<cstdio>

int pond[100][100], cost[100][100], N;

void royfloyd()
{
    int i, j, k;
    for(i=0;i<N;++i)
        for(j=0;j<N;++j)
            cost[i][j]=pond[i][j];
    for(k=0;k<N;++k)
        for(i=0;i<N;++i)
            for(j=0;j<N;++j)
                if((cost[i][j]>cost[i][k]+cost[k][j] || !cost[i][j]) && cost[i][k] && cost[k][j] && i!=j)
                    cost[i][j]=cost[i][k]+cost[k][j];
}

int main()
{
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    int i, j;
    scanf("%i", &N);
    for(i=0;i<N;++i)
        for(j=0;j<N;++j)
            scanf("%i", &pond[i][j]);
    fclose(stdin);
    royfloyd();
    for(i=0;i<N;++i)
    {
        for(j=0;j<N;++j)
            printf("%i ", cost[i][j]);
        printf("\n");
    }
    fclose(stdout);
    return 0;
}