Cod sursa(job #2815075)

Utilizator pizzandreeaCiurescu Andreea pizzandreea Data 9 decembrie 2021 02:20:28
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <queue>

#define MAX 100001
#define INF 1000000001

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

class Graf{

    public:
        int mN;
        vector<vector<int> > M;

        Graf(int N, vector<vector<int> > &m):mN(N), M(m){}

        void RoyFloyd();

};

void Graf :: RoyFloyd(){
    int i,j,k;

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


    for(int i = 1; i <= mN; i++){
            for(int j = 1; j <= mN; j++){
                if(M[i][j] != INF){
                    fout << M[i][j] <<" ";
                }
                else
                    fout << 0 << " ";
            }
        fout << "\n";
    }

}

int main(){
    int N, M;
    fin >> N;


    vector<vector<int> > m(N+1);

    for(int i = 1; i <= N; i++){
        m[i].resize(N+1, 0);
    }

    for(int i = 1; i <= N; i++){
        for(int j =1; j <= N; j++){
            fin >> m[i][j];
            if(!m[i][j] && i != j){
                m[i][j] = INF;
            }
        }
    }
    Graf G(N,m);
    G.RoyFloyd();


    return 0;
}