Cod sursa(job #2400921)

Utilizator Balan_TudorBalan Tudor Cristian Balan_Tudor Data 9 aprilie 2019 11:43:53
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
int n, x[103][103], a, b, c;
void citire()
{
    in >> n;
//    for(int i = 1; i <= n; i++)
//        for(int j = 1; j <= n; j++)
//           if(i != j)
//              x[i][j] = 1000;
     for(int i = 1; i <= n; i++)
         for(int j = 1; j <= n; j++)
             in >> x[i][j];
     in.close();
}
void roy()
{
    for(int k = 1; k <= n; k++)
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
                if(i != j  && (x[i][j] > x[i][k] + x[k][j] or x[i][j] == 0) && x[i][k] * x[k][j] != 0)
                {
//                   cout << i << " " << j << " " << x[i][j] << "->" << x[i][k] + x[k][j] << endl;
                   x[i][j] = x[i][k] + x[k][j];
                }
}
int main()
{
    citire();
//    for(int i = 1; i <= n; i++)
//       x[i][i] = 0;
//    for(int i = 1; i <= n; i++)
//    {
//        for(int j = 1; j <= n; j++)
//            out << x[i][j] << " ";
//        out << endl;
//    }
//    out << endl;
    roy();
//    out << endl;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
            out << x[i][j] << " ";
        out << endl;
    }
    out.close();
    return 0;
}