Cod sursa(job #1419130)

Utilizator kiunyAndrei Gavrila kiuny Data 14 aprilie 2015 19:09:12
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
using namespace std;

vector <vector <int> > v;
int n;
ifstream fin ("royfloyd.in");
ofstream fout("royfloyd.out");

void read()
{
    int x;
    fin >> n;
    vector <int> tmp;
    for(int i = 0 ; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            fin >> x;
            tmp.push_back(x);
        }
        v.push_back(tmp);
        tmp.clear();
    }
}

void royFloyd()
{
    for(int k = 0; k < n; k++)
    {
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < n ; j++)
            {
                if(j != i)
                   if(v[i][j] > v[i][k] + v[k][j])
                   {
                       v[i][j] = v[i][k] + v[k][j];
                   }
            }
        }
    }
}

void show()
{
    for(int i = 0 ; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            fout << v[i][j] << " ";
        }
        fout << "\n";
    }
}

int main()
{
    read();
    royFloyd();
    show();
    return 0;
}