Cod sursa(job #787494)

Utilizator erdokozieEniko Erdokozi erdokozie Data 13 septembrie 2012 15:00:11
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <stdio.h>

using namespace std;

#define inf 2000000000
#define max(a,b) ((a>b) ? a : b)

long x[100][100];
int n;

int main()
{
  FILE *f,*g;

  f=fopen("royfloyd.in","r");
  g=fopen("royfloyd.out","w");

  fscanf(f,"%d",&n);

  for (int i=0;i<n;i++)
    for (int j=0;j<n;j++){
    fscanf(f,"%ld",&x[i][j]);
    if(i!=j && x[i][j]==0) x[i][j]=inf;
    }

  for (int k=0;k<n;k++)
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++){
                if(x[i][j]>0){
                    x[i][j]=min(x[i][j],x[i][k]+x[k][j]);
                }
            }

    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            if(i!=j && x[i][j]==inf) x[i][j]=0;
            fprintf(g,"%ld ",x[i][j]);
        }
        fprintf(g,"\n");
    }
    fclose(f);
    fclose(g);
    return 0;
}