Cod sursa(job #1829235)

Utilizator CalarisPredut Denis Stefanita Calaris Data 14 decembrie 2016 17:26:57
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>

std::fstream f("royfloyd.in",std::ios::in);
std::ofstream g("royfloyd.out");

const int MAX = 101;

int Graf[MAX][MAX];
int minCost[MAX][MAX];

void citire(int &N);
void solve(int N);

int main()
{
    int N;
    citire(N);
    solve(N);

    return 0;
}

void citire(int &N)
{
   int i,j;

   f>>N;
   for(i=1;i<=N;++i)
    {
    for(j=1;j<=N;++j)
        {
        f>>Graf[i][j];
        }
    }
}

void solve(int N)
{
   int i,j,k;

   for(k=1;k<=N;++k)
    {
    for(i=1;i<=N;++i)
        {
        for(j=1;j<=N;++j)
            {
            if(i!=j && Graf[i][k]!=0 && Graf[k][j]!=0 && (Graf[i][j]>Graf[i][k]+Graf[k][j] || !Graf[i][j]))
                {
                Graf[i][j] = Graf[i][k]+Graf[k][j];
                }
            }
        }
    }

    for(i=1;i<=N;++i)
        {
        for(j=1;j<=N;++j)g<<Graf[i][j]<<" ";
        g<<"\n";
        }
}