Cod sursa(job #2170457)

Utilizator tudortarniceruTudor Tarniceru tudortarniceru Data 15 martie 2018 01:26:27
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;

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

const int MAXN = 105;
int n;
int v[MAXN][MAXN];

int main() {

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

    for (int var = 1; var <= n; ++var) {
        queue<int> q;
        q.push(var);
        int s[MAXN], viz[MAXN];
        for (int i = 1; i <= n; ++i) {
            s[i] = 0;
            viz[i] = 0;
        }
        while (!q.empty()) {
            int k = q.front();
            for (int i = 1; i <= n; ++i) {
                if (viz[i] == 0 || s[i] > s[k] + v[k][i]) {
                    viz[i] = 1;
                    s[i] = s[k] + v[k][i];
                    q.push(i);
                }
            }
            q.pop();
        }
        s[var] = 0;
        for (int i = 1; i <= n; ++i) {
            fout << s[i] << ' ';
        }
        fout << '\n';
    }

    fout.close();
    return 0;
}