Pagini recente » Cod sursa (job #2474977) | Cod sursa (job #1597809) | Cod sursa (job #314942) | Cod sursa (job #495791) | Cod sursa (job #1565679)
#include <stdio.h>
#include <vector>
#define N_MAX 103
#define MIN(a, b) (a < b ? a : b)
using namespace std;
int n;
vector<int> adiac[N_MAX];
inline void citire();
void Floyd_Warshall();
inline void afisare();
int main()
{
citire();
Floyd_Warshall();
afisare();
return 0;
}
inline void citire(){
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
scanf("%d", &n);
int i, j;
int x;
for (i = 0; i < n; ++i){
for (j = 0; j < n; ++j){
scanf("%d", &x);
adiac[i].push_back(x);
}
}
}
void Floyd_Warshall(){
int x, y, z;
for (z = 0; z < n; ++z)
for (x = 0; x < n; ++x)
for (y = 0; y < n; ++y){
if (x == y)
continue;
if (adiac[x][z] == 0 || adiac[z][y] == 0)
continue;
if (adiac[x][y] == 0 || adiac[x][z] + adiac[z][y] < adiac[x][y])
adiac[x][y] = adiac[x][z] + adiac[z][y];
}
}
inline void afisare(){
int i, j;
for (i = 0; i < n; ++i){
for (j = 0; j < n; ++j){
printf("%d ", adiac[i][j]);
}
printf("\n");
}
}