Cod sursa(job #2367449)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 5 martie 2019 10:49:22
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <queue>
#define ll long long
#define ull unsigned long long
#define lsb(x) (x & -x)

using namespace std;

ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

const int INF = 2000000;

int main() {

    int n;
    in >> n;
    vector<vector<int>> dp(n + 1, vector<int> (n + 1, INF));
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= n; j ++)
            in >> dp[i][j];

    for(int k = 1; k <= n; k ++)
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= n; j ++)
                if(i != j && dp[i][k] && dp[k][j])
                    dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

    for(int i = 1; i <= n; i ++) {
        for(int j = 1; j <= n; j ++)
            out << dp[i][j] << " ";
        out << "\n";
    }

    return 0;
}