Cod sursa(job #2763109)

Utilizator tigaieNedelcu Ioan-Andrei tigaie Data 11 iulie 2021 16:49:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <bits/stdc++.h>
#include <list>
#include <ext/pb_ds/assoc_container.hpp>
#define FOR(i , n) for(int i = 0 ; i < (n) ; i++)
#define N 201
#define apare printf("apare");
#define endl "\n"
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int , int> pii;
const int inf = 1e6;

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    freopen("royfloyd.in" , "r" , stdin);
    freopen("royfloyd.out" , "w" , stdout);
    int n;
    cin >> n;
    vector<vector<int>> sequence( n , vector<int>(n , 0));
    FOR(i , n){
        FOR(j , n){
            cin >> sequence[i][j];
            if(sequence[i][j] == 0)
                sequence[i][j] = inf;
        }
    }

    for(int k = 0 ; k < n ; k++){
        for(int j = 0 ; j < n ; j++){
            for(int i = 0 ; i < n ; i++){
                if(i != j && j != k && i != k)
                    sequence[i][j] = min(sequence[i][j] , sequence[i][k] + sequence[k][j]);
            }
        }
    }

    FOR(i , n){
        FOR(j , n){
            if(sequence[i][j] == inf)
                cout << "0 ";
            else
                cout << sequence[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}