Cod sursa(job #1848239)

Utilizator hegedusPaul Hegedus hegedus Data 15 ianuarie 2017 17:38:51
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

unsigned short n,i,j,a[256][256],dist[256][256],k,v[5000],ii;

void read()
{
    f>>n;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            f>>a[i][j];
        }
}

void dijkstra(int ii)
{
    for(i=1;i<=n;i++) dist[ii][i]=60000;
    dist[ii][ii]=0; v[1]=ii; k=1;

    for(i=1;i<=k;i++)
        for(j=1;j<=n;j++)
            if(dist[ii][j]>dist[ii][v[i]]+a[v[i]][j] && a[v[i]][j]>0)
            {
                dist[ii][j]=dist[ii][v[i]]+a[v[i]][j];
                v[++k]=j;
            }
}

void write()
{
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++) g<<dist[i][j]<<" ";
        g<<endl;
    }
    g.close();
}

int main()
{
    read();
    for(ii=1;ii<=n;ii++) dijkstra(ii);
    write();
    return 0;
}