Cod sursa(job #970730)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 7 iulie 2013 17:44:27
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>
#include <climits>

int main(void)
{
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    int nV;
    scanf("%d", &nV);
    int *nArr_c = new int[nV * nV];
    for(int i(0); i < nV * nV; i++)
        scanf("%d", &nArr_c[i]);
    int *nArr = new int[nV * nV];
    for(int i(0); i < nV * nV; i++)
        nArr[i] = INT_MAX;
    for(int i(0); i < nV; i++)
        for(int j(0); j < nV; j++)
            nArr[i * nV + j] = nArr_c[i * nV + j];
    for(int i(0); i < nV; i++)
        nArr[i * nV + i] = 0;
    for(int k(0); k < nV; k++)
        for(int i(0); i < nV; i++)
            for(int j(0); j < nV; j++)
                if(nArr[i * nV + j] > nArr[i * nV + k] + nArr[k * nV + j])
                    nArr[i * nV + j] = nArr[i * nV + k] + nArr[k * nV + j];
    for(int i(0); i < nV; i++)
    {
        for(int j(0); j < nV; j++)
            if(nArr[i * nV + j] == INT_MAX) printf("%d ", 0);
            else printf("%d ", nArr[i * nV + j]);
        printf("%s", "\n");
    }
    return 0;
}