Mai intai trebuie sa te autentifici.
Cod sursa(job #406319)
| Utilizator | Data | 1 martie 2010 13:48:17 | |
|---|---|---|---|
| Problema | Floyd-Warshall/Roy-Floyd | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <cstdio>
const int MAX=101,INF=100000000;
int way[MAX][MAX],n;
int main(){
FILE* fin=fopen("royfloyd.in","r");
FILE* fout=fopen("royfloyd.out","w");
fscanf(fin,"%u",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
fscanf(fin,"%u",&way[i][j]);
}
}
for(int k=0;k<n;k++){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(way[i][k]&&way[k][j]&&(way[i][j]>way[i][k]+way[k][j]||!way[i][j])&&i!=j){
way[i][j]=way[i][k]+way[k][j];
}
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
fprintf(fout,"%u ",way[i][j]);
}
fputc('\n',fout);
}
return 0;
}
