Cod sursa(job #1450734)

Utilizator cuna_christianCuna-Mic Mihai-Cristian cuna_christian Data 14 iunie 2015 15:12:18
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

int array[100][100], n;

void citire(){

    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n ; j++)
            scanf("%d", &array[i][j]);
}

void shortest_road(){
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            for(int k = 1; k <= n; k++)
                if(array[i][k] && array[k][j] && (i != j) && (array[i][j] > array[i][k] + array[k][j] || !array[i][j]))
                    array[i][j] = array[i][k] + array[k][j];
}

void afisare(){
    for(int i = 1 ; i <= n; i++){
        for(int j = 1; j <= n; j++)
            printf("%d ", array[i][j]);
        printf("\n");
    }
}

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

    citire();

    shortest_road();

    afisare();

    return 0;
}