Cod sursa(job #1235090)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 28 septembrie 2014 19:13:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
const int INFINIT = 9999999;

int v[105][105],n;

void citire()
{

    in>>n;
    int x;
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= n ; j++)
    {

        in>>x;
        if(i != j && x == 0)
            v[i][j] = INFINIT;
        else
            v[i][j] = x;
    }
    in.close();
}

void royfloyd()
{

    for(int k = 1 ; k <= n ; k++)
        for(int j = 1 ; j <= n ; j++)
            if(k != j)
                for(int i = 1 ; i <= n ; i++)
                    if(i != k)
                        v[j][i] = min(v[j][i],v[j][k]+v[k][i]);

    for(int i = 1 ; i <= n ; i++){
        for(int j = 1 ; j <= n ; j++)
            out<<v[i][j]<<" ";
        out<<"\n";
    }
    out.close();
}

int main()
{

    citire();
    royfloyd();
    return 0;
}