Cod sursa(job #866492)

Utilizator daniel.pDaniel daniel.p Data 28 ianuarie 2013 10:47:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<iostream>
#include<fstream>
#include<cstdio>
#include<algorithm>

using namespace std;

FILE *f1=fopen("royfloyd.in","r"), *f2=fopen("royfloyd.out","w");

int main (void)
{
    int a[101][101],n;

    //read
    fscanf(f1,"%d ",&n);
    for (int i=1;i<=n;++i)
        for (int j=1;j<=n;++j)
            fscanf(f1,"%d ", &a[i][j]);

    //roy floyd
    for (int k=1;k<=n;++k)
        for (int i=1;i<=n;++i)
            for (int j=1;j<=n;++j)
                if (a[i][k]!=0 && a[k][j]!=0 && i!=j && (a[i][j]>a[i][k]+a[k][j] || a[i][j]==0) )
                    a[i][j]=a[i][k]+a[k][j];
    for (int i=1;i<=n;++i)
    {
        for(int j=1;j<=n;++j)
            fprintf(f2,"%d ",a[i][j]);
        fprintf(f2,"\n");
    }

    fclose(f1);
    fclose(f2);
    return 0;
}