Cod sursa(job #764201)

Utilizator mi5humihai draghici mi5hu Data 4 iulie 2012 13:16:33
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>

int main()
{
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    
    short int i, j, k, n, v[101][101];
    scanf("%hd", &n);
    
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%hd", &v[i][j]);
        }
    }
    
    for (k = 0; k < n; k++) {
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                if (((v[i][k] + v[k][j] < v[i][j]) || (v[i][j] == 0)) 
                   && (v[i][k] != 0) && (v[k][j] != 0) && (i != j)) {
                   v[i][j] = v[i][k] + v[k][j];            
                }
            }
        }
    }
    
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%hd ", v[i][j]);
        }
        printf("\n");
    }
}