Pagini recente » Cod sursa (job #398679) | Cod sursa (job #2129963) | Cod sursa (job #678528) | Cod sursa (job #2286424) | Cod sursa (job #1274701)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int INFINITY = (1 << 31) - 1;
int main()
{
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
int V;
vector < vector < int > > M;
vector < vector < int > > Distance;
scanf("%d", &V);
int i;
for(i = 0 ; i <= V ; ++i)
{
Distance.push_back(vector < int > (V + 1, INFINITY));
M.push_back(vector < int > (V + 1));
}
int j, k;
for(i = 1 ; i <= V ; ++i)
for(j = 1 ; j <= V ; ++j)
scanf("%d", &M[i][j]);
for(i = 1 ; i <= V ; ++i)
Distance[i][i] = 0;
for(i = 1 ; i <= V ; ++i)
for(j = 1 ; j <= V ; ++j)
if(M[i][j])
Distance[i][j] = M[i][j];
for(k = 1 ; k <= V ; ++k)
for(i = 1 ; i <= V ; ++i)
for(j = 1 ; j <= V; ++j)
if(Distance[i][j] > Distance[i][k] + Distance[k][j])
Distance[i][j] = Distance[i][k] + Distance[k][j];
for(i = 1 ; i <= V ; ++i)
{
for(j = 1 ; j <= V ; ++j)
printf("%d ", Distance[i][j]);
printf("\n");
}
return 0;
}