Cod sursa(job #1473864)

Utilizator Corneliu10Dumitru Corneliu Corneliu10 Data 20 august 2015 13:04:27
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <cstring>
#include <fstream>

#define N 103

using namespace std;

int dist[N][N],n;

void citire()
{
    int i,j;
    ifstream f("royfloyd.in");

    f>>n;

    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            f>>dist[i][j];

    f.close();
}

void Floyd_Warshall()
{
    int i,j,k;

    //memset(dist,0,sizeof(int)*(n)*(n));

    for(k=0;k<n;k++)
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
            {
                if((dist[i][k] * dist[k][j] != 0) && (i!=j))
                {
                    if((dist[i][k] + dist[k][j] < dist[i][j]) || (dist[i][j] == 0))
                    {
                        dist[i][j] = dist[i][k] + dist[k][j];
                    }
                }
            }
}

void afisare()
{
   int i,j;
   ofstream g("royfloyd.out");

   for(i=0;i<n;i++)
   {
        for(j=0;j<n;j++)
        {
            g<<dist[i][j]<<" ";
        }

        g<<"\n";
   }

   g.close();
}

int main()
{
    citire();

    Floyd_Warshall();

    afisare();
}