Cod sursa(job #281831)

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

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[k][j] = a[i][j] + a[k][i];
}
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;
}