Cod sursa(job #2116986)

Utilizator stefanchistefan chiper stefanchi Data 28 ianuarie 2018 13:17:51
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <cstdio>

using namespace std;
int n;
int mat[100][100];

void calcularecost()
{
    for(int k = 0 ; k < n ; k ++)
    {
        for(int i = 0 ; i  < n ; i++)
        {
            if(i != k)
                for(int j = 0 ; j < n ; j++)
                {
                    if(j != k )
                    {
                        if(mat[i][j] > mat[i][k] + mat[k][j])
                            mat[i][j] = mat[i][k] + mat[k][j];
                    }
                }
        }
    }
}

void afisare()
{
    for(int i = 0 ; i < n ; i++)
    {
        for(int j= 0 ; j < n ; j++)
        {
            if( i == j)
            {
                printf("0 ");
                continue;
            }
            if(mat[i][j] == 2000)
            {
                printf("0 ");
                continue;
            }
            printf("%d ",mat[i][j]);
        }
    }
}


int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    scanf("%d %d",&n);
    for(int i = 0 ; i < n ;  i++)
        for(int j = 0 ; j < n ; j ++)
        {
            scanf("%d ",&mat[i][j]);
            if(mat[i][j] == 0)
                mat[i][j] = 2000;
        }
    calcularecost();
    afisare();
    return 0;
}