Cod sursa(job #2325786)

Utilizator andrei13Paval Andrei andrei13 Data 22 ianuarie 2019 22:08:54
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <list>

using namespace std;

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

const int INF=1<<15;

int n;
int cost[101][101];
int w[101][101];

void royfloyd()
{
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
           if(w[i][j])
             cost[i][j]=w[i][j];
           else
           cost[i][j]=INF;
    for(int i=1;i<=n;++i)
        cost[i][i]=0;
    for(int k=1;k<=n;++k)
        for(int i=1;i<=n;++i)
          for(int j=1;j<=n;++j)
            if((i-j)*(j-k)*(i-k))
              if(cost[i][j]>cost[i][k]+cost[k][j])
                cost[i][j]=cost[i][k]+cost[k][j];
}

int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            f>>w[i][j];
    royfloyd();
    for(int i=1;i<=n;++i)
        {
            for(int j=1;j<=n;++j)
              g<<cost[i][j]<<' ';
            g<<endl;
        }
   return 0;
}