Cod sursa(job #281834)

Utilizator MirceampMuresan Mircea Paul Mirceamp Data 15 martie 2009 23:56:54
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#define MAX 101

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

int n,a[MAX][MAX];
void read(){
     int i,j;
     fin>>n;
     for(i = 1; i <= n; i++){
           for(j = 1; j <= n; j++)
           fin>>a[i][j];
           }
fin.close();
}
void rf(){
     int i,j,k;
     for(k = 1; k <= n; k++)
           for(i = 1; i <= n; i++)
                 for(j = 1; j <= n; j++)
                       if((a[i][j] > a[i][k]+a[k][j] || !a[i][j] && i!= j) &&a[i][k] && a[k][j])
                        a[i][j] = a[i][k]+a[k][j];
}
int main(){
    int i,j;
    read();
    rf();
    for(i = 1; i <= n; i++){
          for(j = 1; j <= n; j++)
          fout<<a[i][j]<<" ";
          fout<<"\n";
    }
fout.close();
return 0;
}