Pagini recente » Cod sursa (job #1602954) | Cod sursa (job #3318662) | Cod sursa (job #3343738) | Cod sursa (job #3345275) | Cod sursa (job #3321566)
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
#include <fstream>
using namespace std;
ifstream fin("royfloyd.in");
ofstream gout("royfloyd.out");
int main(){
int n;
fin>>n;
vector<vector<int>> dist(n, vector<int>(n, INT_MAX));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int x;
fin>>x;
if(x != 0){
dist[i][j] = x;
}
if(i == j){
dist[i][j] = 0;
}
}
}
for(int k=0;k<n;k++){
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(dist[i][k] != INT_MAX && dist[k][j] != INT_MAX){
if(dist[i][k] + dist[k][j] < dist[i][j]){
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(dist[i][j] == INT_MAX){
gout<<0<<" ";
}
else{
gout<<dist[i][j]<<" ";
}
}
gout<<"\n";
}
return 0;
}