Pagini recente » Cod sursa (job #1913752) | Cod sursa (job #2073761) | Cod sursa (job #1988564) | Cod sursa (job #2525765) | Cod sursa (job #1579623)
//Problema Royfloyd - InfoArena ( http://www.infoarena.ro/problema/royfloyd )
#include <cstdio>
#define in "royfloyd.in"
#define out "royfloyd.out"
#define NMAX 107
#define DIM 100007
using namespace std;
int n, mat[NMAX][NMAX], poz;
char buff[DIM];
inline void goNext()
{
++poz;
if(poz == DIM)
{
poz = 0;
fread(buff, 1, DIM, stdin);
}
}
inline void citeste(int &nr)
{
nr = 0;
while(buff[poz] < '0' || buff[poz] > '9') goNext();
while(buff[poz] <= '9' && buff[poz] >= '0')
{
nr = nr * 10 + buff[poz] - '0';
goNext();
}
}
inline void citire()
{
fread(buff, 1, DIM, stdin);
citeste(n);
for(int i = 1; i<= n; ++i)
{
for(int j = 1; j<= n; ++j)
{
citeste(mat[i][j]);
}
}
}
inline void build()
{
for(int k = 1; k<= n; ++k)
{
for(int i = 1; i<= n; ++i)
{
if(i == k) continue;
for(int j = 1; j<= n; ++j)
{
if(j == k || j == i) continue;
if(mat[i][j] > mat[i][k] + mat[k][j]) mat[i][j] = mat[i][k] + mat[k][j];
}
}
}
}
inline void afisare()
{
for(int i = 1; i<= n; ++i)
{
for(int j = 1; j<= n; ++j)
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
citire();
build();
afisare();
return 0;
}