Cod sursa(job #1202741)

Utilizator pentrusandaPentru Sanda pentrusanda Data 29 iunie 2014 13:45:51
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

int n,m,k,a[105][105][2];

int main()
{
    ifstream in ("royfloyd.in");
    ofstream out ("royfloyd.out");
    in>>n;
    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=n;++j)
        {
            in>>a[i][j][0];
        }
    }
    for (int k=1;k<=n;++k)
    {
        int v1=k%2,v2=(k+1)%2;
        for (int i=1;i<=n;++i)
        {
            for (int j=1;j<=n;++j)
            {
                if (i==j) a[i][j][v1]=0;
                else
                {
                    a[i][j][v1]=a[i][j][v2];
                    if ((a[i][k][v2]+a[k][j][v2]<a[i][j][v1]) || (a[i][j][v1]==0)) a[i][j][v1]=a[i][k][v2]+a[k][j][v2];
                }
            }
        }
    }

    int v=n%2;

    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=n;++j)
        {
            out<<a[i][j][v]<<" ";
        }
        out<<"\n";
    }

    in.close();
    out.close();
    return 0;
}