Cod sursa(job #1846645)

Utilizator dranoellenTurica Leonard-Petru dranoellen Data 13 ianuarie 2017 19:53:04
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
using namespace std;
int main()
{
    FILE *f=fopen("royfloyd.in","r");
    int n,x[101][101];
    fscanf(f,"%d",&n);
    for(int i=1; i<=n; ++i)
        for(int j=1; j<=n; ++j)
        {
            fscanf(f,"%d",&x[i][j]);
            if((i-j)&&(!x[i][j]))x[i][j]=1000005;
        }

    int ok=1;
    while(ok)
    {
        ok=0;
        for(int trans=1;trans<=n;++trans)
            for(int plec=1;plec<=n;++plec)
                for(int ajng=1;ajng<=n;++ajng)
                {
                    if(x[plec][trans]+x[trans][ajng]<x[plec][ajng])x[plec][ajng]=x[plec][trans]+x[trans][ajng],ok=1;
                }
    }





    fclose(f);
    f=fopen("royfloyd.out","w");

      for(int i=1; i<=n; ++i)
    {
        for(int j=1; j<=n; ++j)
            if((i-j)&&(x[i][j]==1000005))fprintf (f," 0");
            else fprintf(f,"%d ",x[i][j]);
        fprintf(f,"\n");
    }


    return 0;
}