Cod sursa(job #2549542)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 17 februarie 2020 19:26:32
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#define NMAX 105
#define INF 0x3f3f3f3f
#include <fstream>
#include <vector>

using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

int n, m;
int c[NMAX][NMAX], p[NMAX][NMAX];

void init(){
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(i!=j)
                c[i][j] = INF;
        }
    }
}
void citire(){
    f>>n;
    init();
    int x, y, cost;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            f>>c[i][j];
}


void parc(int k){
     for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++){
            if((c[i][j] > c[i][k] + c[k][j] || !c[i][j]) && c[i][k]!=0 && c[k][j]!=0 && i!=j){
                c[i][j] = c[i][k] + c[k][j];
                p[i][j] = p[k][j];
            }
     }
}

void roy_floyd(){
    for(int k=1; k<=n; k++)
        parc(k);
}
int main()
{
    citire();
    roy_floyd();
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(c[i][j] == INF)
                c[i][j] = 0;
            g<<c[i][j]<<" ";
        }
        g<<'\n';
    }

    return 0;
}