Cod sursa(job #2037422)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 12 octombrie 2017 10:35:12
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int nmax = 100;

int dp[1+nmax][1+nmax];

int min(int a,int b)
{
    if(a < b)
        return a;
    return b;
}

int main()
{
    in = fopen("royfloyd.in","r");
    out = fopen("royfloyd.out","w");
    int n;
    fscanf(in,"%d",&n);
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= n; j ++)
        {
            int x;
            fscanf(in,"%d",&x);
            dp[i][j] = x;
        }
    }
    for(int k = 1;k <= n;k ++)
    {
        for(int i = 1;i <= n;i ++)
        {
            for(int j = 1;j <= n;j ++)
            {
                if(i != j)
                    dp[i][j] = min(dp[i][j],dp[i][k]+dp[k][j]);
            }
        }
    }
    for(int i = 1;i <= n;i ++)
    {
        for(int j = 1;j <= n;j ++)
            fprintf(out,"%d ",dp[i][j]);
        fprintf(out,"\n");
    }

    return 0;
}