Cod sursa(job #2198457)

Utilizator bianca.tazlauanuBianca Tazlauanu bianca.tazlauanu Data 24 aprilie 2018 15:34:01
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#include <algorithm>

#define NMAX 200
#define INF (1 << 29)

using namespace std;
 
int d[NMAX][NMAX];
 
int main() {
    int N;
    ifstream in("royfloyd.in");
    ofstream out("royfloyd.out");

    in >> N;
 
    for (int i = 1 ; i <= N ; i++) {
        for (int j = 1; j <= N; j++) {
	    in >> d[i][j];

	    if (d[i][j] == 0 && i != j) {
	    	d[i][j] = INF;
	    }
	}
    }

    for (int k = 1; k <= N; k++) {
	for (int i = 1; i <= N; i++) {
	    for (int j = 1; j<= N; j++) {
	    	d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
            }
	}
    }

    for (int i = 1; i <= N; i++) {
	for (int j = 1; j <= N; j++) {
	    
	    if (d[i][j] == INF) {
                out << 0 << " ";

            } else {
                out << d[i][j] << " ";
	    }
	}

        out << endl;
    }

    in.close();
    out.close();
 
    return 0;
}