Cod sursa(job #145671)

Utilizator moga_florianFlorian MOGA moga_florian Data 29 februarie 2008 09:51:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#define Nmax 105

int A[Nmax][Nmax];

int main(){

  FILE *fin = fopen("royfloyd.in","r"), 
       *fout = fopen("royfloyd.out","w");
       
  int N;
  fscanf(fin,"%d",&N);
  for(int i=1;i<=N;i++)
    for(int j=1;j<=N;j++){
      fscanf(fin,"%d",&A[i][j]);
    if(A[i][j] == 0 && i!=j)
      A[i][j] = 10000000;   
  }
      
  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] + A[k][j] < A[i][j])
          A[i][j] = A[i][k] + A[k][j];          
          
  for(int i=1;i<=N;i++){
    for(int j=1;j<=N;j++)
      fprintf(fout,"%d ",A[i][j]);
    fprintf(fout,"\n");
  }  
  
  fclose(fin);
  fclose(fout);
  return 0;
}