Mai intai trebuie sa te autentifici.

Cod sursa(job #2642058)

Utilizator TheGodFather2131Alexandru Miclea TheGodFather2131 Data 13 august 2020 15:59:06
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
//ALEXANDRU MICLEA

#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>

using namespace std;

//#include <iostream>
#include <fstream>
//ifstream fin("input.in"); ofstream fout("output.out");
ifstream fin("royfloyd.in"); ofstream fout("royfloyd.out");

//VARIABLES

int v[105][105];
const int inf = 1e9;

//FUNCTIONS



//MAIN
int main() {

    int n;
    fin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            fin >> v[i][j];
            if (v[i][j] == 0) v[i][j] = inf;
        }
    }

    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= n; i++) {
            if (k == i || v[i][k] == inf) continue;
            for (int j = 1; j <= n; j++) {
                if (j == i || v[k][j] == inf) continue;

                v[i][j] = min(v[i][j], v[k][j] + v[i][k]);
            }
        }
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (v[i][j] == inf) fout << "0 ";
            else fout << v[i][j] << " ";
        }
        fout << '\n';
    }

    return 0;
}