Cod sursa(job #874134)

Utilizator DanFodorFODOR Dan Horatiu DanFodor Data 7 februarie 2013 22:14:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <limits.h>

using namespace std;

const int x=INT_MAX/2;

int main()
{
    ifstream in ("royfloyd.in");
    ofstream out ("royfloyd.out");
    int n, v[103][103], i, j, k;
    //int l[103][103];
    in>>n;
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
        {
            in>>v[i][j];
            if (i!=j)
                {
                    if (v[i][j]==0)
                        v[i][j]=x;
                    /*else
                    {
                        l[i][j]=i;
                        l[j][i]=j;
                    }*/

                }

        }
    for (k=1; k<=n; k++)
        for (i=1; i<=n; i++)
            if (i!=k)
                for (j=1; j<=n; j++)
                    if (i!=j&&k!=j)
                        if (v[i][k]+v[k][j]<v[i][j])
                        {
                            v[i][j]=v[i][k]+v[k][j];
                            //l[i][j]=k;
                        }
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            out<<v[i][j]<<" ";
        out<<"\n";
    }

    return 0;
}