Cod sursa(job #2375683)

Utilizator SirVSbiVidam Szablocs SirVSbi Data 8 martie 2019 11:30:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;

#define INF 1 << 30

int main(){
    ifstream be("royfloyd.in");
    ofstream ki("royfloyd.out");


    int n;
    be >> n;
    int graph[n][n];
    int rf[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            be >> graph[i][j];
            if(i == j or graph[i][j] == 0){
                graph[i][j] = INF;
            }
            rf[i][j] = graph[i][j];
        }
    }


    //here comes the Floyd-Warshall
    for(int k = 0; k < n; k++){
        for(int i = 0; i < n; i++){
            for(int j= 0; j < n; j++){
                if(rf[i][k] + rf[k][j] < rf[i][j]
                   and rf[i][k] != INF
                   and rf[k][j] != INF
                   and i != j
                   )
                    rf[i][j] = rf[i][k] + rf[k][j];
            }
        }
    }

    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
                if(rf[i][j] == INF){
                    ki << "0 ";
                }
                else
                ki << rf[i][j] << " ";
        }
        ki << endl;
    }



}