Cod sursa(job #1010935)

Utilizator sziliMandici Szilard szili Data 15 octombrie 2013 21:55:58
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

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

    int n;
    scanf("%d", &n);

    int a[100][100];

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

    //floyd-warshall

    for (int k=0; k<n; k++){
        for (int i=0; i<n; i++){
            for (int j=0; j<n; j++) {
                if (i != j && a[i][k] != 0 && a[k][j] != 0 && ((a[i][j] > a[i][k] + a[k][j]) || a[i][j] == 0) ){
                    a[i][j] = a[i][k] + a[k][j];
                }
            }
        }
    }


    //print results
    for (int i=0; i<n; i++){
        for (int j=0; j<n; j++){
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

    return 0;
}