Cod sursa(job #2312116)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 4 ianuarie 2019 12:04:05
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

int v[105][105], ans[105][105] ;
int n ;

void RoyFloyd() {
    register int i, j, k ;
    for (k = 1 ; k <= n ; ++ k) {
        for (i = 1 ; i <= n ; ++ i) {
            for (j = 1 ; j <= n ; ++ j) {
                if (ans[i][j] && ans[i][k] && ans[k][j] && i != j)
                    ans[i][j] = MIN(ans[i][j], ans[i][k] + ans[k][j]) ; } } } }

int main() {
    freopen("royfloyd.in", "r", stdin) ;
    freopen("royfloyd.out", "w", stdout) ;
    scanf("%d", &n) ;
    register int i, j ;
    for (i = 1 ; i <= n ; ++ i) {
        for (j = 1 ; j <= n ; ++ j) {
            scanf("%d", &v[i][j]) ;
            ans[i][j] = v[i][j] ; } }
    RoyFloyd() ;
    for (i = 1 ; i <= n ; ++ i) {
        for (j = 1 ; j <= n ; ++ j) {
            printf("%d ", ans[i][j]) ; }
        printf("\n") ; }
    return 0; }