Pagini recente » Cod sursa (job #268666) | Cod sursa (job #2051303) | Cod sursa (job #3005024) | Cod sursa (job #252485) | Cod sursa (job #1069980)
# include <cstdio>
# include <queue>
using namespace std;
const int N = 100;
int a [N + 1] [N + 1];
queue <int> q;
int n;
void citeste ()
{
int i, j;
scanf ("%d", & n);
for (i = 1; i <= n; i ++)
for (j = 1; j <= n; j ++)
scanf ("%d", & a [i] [j]);
}
void init ()
{
freopen ("royfloyd.in", "r", stdin);
freopen ("royfloyd.out", "w", stdout);
citeste ();
}
void royFloyd ()
{
int i, j, aux;
for (i = 1; i <= n; i ++)
{
q. push (i);
while (q. size ())
{
aux = q. front ();
for (j = 1; j <= n; j ++)
if (j != i && a [aux] [j])
if (a [i] [j] == 0 || a [aux] [j] + a [i] [aux] <= a [i] [j])
{
q. push (j);
a [i] [j] = a [aux] [j] + a [i] [aux];
}
q. pop ();
}
}
}
void afisare ()
{
int i, j;
for (i = 1; i <= n; i ++)
{
for (j = 1; j <= n; j ++)
printf ("%d ", a [i] [j]);
printf ("\n");
}
}
int main ()
{
init ();
royFloyd ();
afisare ();
return 0;
}