Cod sursa(job #150312)

Utilizator recviemAlexandru Pana recviem Data 6 martie 2008 20:32:17
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
//#include "stdafx.h"
#include "cstdio"
#define inf 0x3f3f3f3f
#define fin  "royfloyd.in"
#define fout "royfloyd.out"
using namespace std;

    int ad[126][126],n,m;


void citire()
{
    freopen(fin,"r",stdin);
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            scanf("%d",&ad[i][j]);
    fclose(stdin);
}

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 (ad[i][j] > ad[i][k]+ad[k][j] && i!=j)
                    ad[i][j]=ad[i][k]+ad[k][j];
}

void scrie(int ad[126][126])
{
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
            printf("%d ",ad[i][j]);
        printf("\n");
    }
}

void finish()
{
    freopen(fout,"w",stdout);
    scrie(ad);
    fclose(stdout);
}

int main()
{
    citire();
    roy_floyd();
    finish();
    return 0;
}