Cod sursa(job #2040741)

Utilizator oroles94oroles94 oroles94 Data 16 octombrie 2017 14:30:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
//
//  main.c
//  floyd-warshall
//
//  Created by Dan Mihai Vidican on 06/12/2017.
//  Copyright © 2017 Dan Mihai Vidican. All rights reserved.
//

#include <stdio.h>


int main(void) {
    
    int T;
    int a[105][105];
    int i,j,k;
    
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    
    scanf("%d", &T);
    for(i=1; i<=T; i++)
        for(j=1;j<=T;j++)
            scanf("%d", &a[i][j]);
    
    for(k=1;k<=T;k++)
        for(i=1; i<=T; i++){
            for(j=1;j<=T;j++)
               if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) a[i][j] = a[i][k] + a[k][j];
          
        }
    for(i=1; i<=T; i++){
        for(j=1; j<=T; j++) printf("%d ",a[i][j]);
        printf("\n");
    }
    
    return 0;
}