Cod sursa(job #2180926)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 21 martie 2018 12:16:09
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
#include <iostream>
#define INF 2000000000
using namespace std;
int m[101][101],p[101][101];
int main()
{
    FILE *fin=fopen ("royfloyd.in","r");
    FILE *fout=fopen ("royfloyd.out","w");
    int n,i,j,k;
    fscanf (fin,"%d",&n);
    for (i=1;i<=n;i++){
        for (j=1;j<=n;j++){
            fscanf (fin,"%d",&m[i][j]);
            if (m[i][j]!=0)
                p[i][j]=m[i][j];
            else p[i][j]=INF;
        }
    }
    for (k=1;k<=n;k++){
        for (i=1;i<=n;i++){
            for (j=1;j<=n;j++){
                if (k!=i && k!=j && i!=j && p[i][k]!=INF && p[k][j]!=INF)
                    p[i][j]=min(p[i][j],p[i][k]+p[k][j]);
            }
        }
    }
    for (i=1;i<=n;i++){
        for (j=1;j<=n;j++){
            if (i==j)
                p[i][j]=0;
            fprintf (fout,"%d ",p[i][j]);
        }
        fprintf (fout,"\n");
    }
    return 0;
}