Cod sursa(job #1124649)

Utilizator raazvvannheghedus razvan raazvvann Data 26 februarie 2014 13:04:13
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
// Roy Floyd
#include<iostream>
#include<fstream>
#include<limits>
#define DMAX 105

using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
const int INF=100000;
int M[DMAX][DMAX];
int n;

void RoyFloyd();

int main()
{
    f>>n;

    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            f>>M[i][j];
            if(M[i][j]==0)
                M[i][j]=INF;
        }
    RoyFloyd();
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            if(M[i][j]==INF)
                g<<0<<" ";
            else
                g<<M[i][j]<<" ";
        g<<"\n";
    }
    return 0;
}
void RoyFloyd()
{
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(M[i][j]>M[i][k]+M[k][j])
                    M[i][j]=M[i][k]+M[k][j];
}