Cod sursa(job #1757241)

Utilizator CammieCamelia Lazar Cammie Data 14 septembrie 2016 18:59:05
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int a[102][102];
int n;

void citire()
{
    int q,i,j;
    f>>n;
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
        {
            f>>q;
            if ((i!=j)&&(q==0))
                a[i][j]=INT_MAX;
            else
                a[i][j]=q;
        }
}

void constrdrum()
{
    int i,j,k;
    for (k=1; k<=n; k++)
        for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
            if (a[i][j]>a[i][k]+a[k][j])
                a[i][j]=a[i][k]+a[k][j];
}

/*void drum(int i, int j)
{
    int gasit,k;
    gasit=0;
    k=1;
    while ((!gasit)&&(k<=n))
    {
        if ((i!=k)&&(j!=k)&&(a[i][j]==a[i][k]+a[k][j]))
        {
            gasit=1;
            drum(i,k);
            drum(k,j);
        }
        k++;
    }
    if (!gasit)
        g<<j<<" ";
}*/
int main()
{
    citire();
    constrdrum();
    int i,j;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            g<<a[i][j]<<" ";
        g<<"\n";

    }
    return 0;
}