Pagini recente » Cod sursa (job #984022) | Cod sursa (job #2930861) | Cod sursa (job #2447131) | Cod sursa (job #2371751) | Cod sursa (job #2375683)
#include <iostream>
#include <fstream>
using namespace std;
#define INF 1 << 30
int main(){
ifstream be("royfloyd.in");
ofstream ki("royfloyd.out");
int n;
be >> n;
int graph[n][n];
int rf[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
be >> graph[i][j];
if(i == j or graph[i][j] == 0){
graph[i][j] = INF;
}
rf[i][j] = graph[i][j];
}
}
//here comes the Floyd-Warshall
for(int k = 0; k < n; k++){
for(int i = 0; i < n; i++){
for(int j= 0; j < n; j++){
if(rf[i][k] + rf[k][j] < rf[i][j]
and rf[i][k] != INF
and rf[k][j] != INF
and i != j
)
rf[i][j] = rf[i][k] + rf[k][j];
}
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(rf[i][j] == INF){
ki << "0 ";
}
else
ki << rf[i][j] << " ";
}
ki << endl;
}
}