Cod sursa(job #1771173)

Utilizator ZeratulVeress Szilard Zeratul Data 5 octombrie 2016 12:24:56
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>

#define FOR(i,k,v) for(i = k;i<=v;i++)

using namespace std;

int n,q,i,j,p;
int t[101][101];

ofstream ki("royfloyd.out");

void kiir()
{
    FOR(i,1,n)
        {
            FOR(j,1,n)
            ki<<t[i][j]<<" ";
            ki<<"\n";
        }
}

int main()
{
    ifstream be("royfloyd.in");

    be>>n;
    FOR(i,1,n)
        FOR(j,1,n)
            be>>t[i][j];

    FOR(q,1,n)
    {
        FOR(i,1,n)
            FOR(j,1,n)
            if(i != j)
            {
                int MIN;
                if(t[i][j] == 0)
                    MIN = 200000000;
                else
                    MIN = t[i][j];
                FOR(p,1,n)
                if(t[i][p] and t[p][j])
                {
                    if(MIN > t[i][p] + t[p][j])
                    {
                        //cout<<i<<" "<<j<<" "<<p<<endl;
                        MIN = t[i][p] + t[p][j];
                    }
                }
                t[i][j] = MIN;
            }
    }

    kiir();



    return 0;
}