Cod sursa(job #1342758)

Utilizator bububulmezBulmez Alexandru bububulmez Data 14 februarie 2015 14:57:25
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#define inf 999999999
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int n,c[101][101],pred[101][101];
void citire()
{

    f>>n;
    for(int i=1; i<n; i++)
        for(int j=i+1; j<=n; j++)
            c[i][j]=c[j][i]=inf;
    for(int i=1; i<=n; i++)
    {

        for(int j=1; j<=n; j++)
            {
            f>>c[i][j];
            if(c[i][j]>0)
                pred[i][j]=i;
            }
    }
}
void Roy_Floyd()
{
    for(int k=1; k<=n; k++)
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                if(c[i][j]>c[i][k]+c[k][j])
                {
                    c[i][j]=c[i][k]+c[k][j];
                    pred[i][j]=pred[k][j];
                }
}

int main()
{
    citire();
    Roy_Floyd();
    for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
                g<<c[i][j]<<' ';
            g<<endl;
        }
    //afis_drum(1,2);
    return 0;
}