Pagini recente » Cod sursa (job #70801) | Cod sursa (job #2104537) | Cod sursa (job #1277716) | Cod sursa (job #2955233) | Cod sursa (job #2780733)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#define MaxN 105
#define INF 1001
#define MAX 131072
using namespace std;
char f[MAX];
int pos = 0, sign;
FILE *IN, *OUT;
void Read(int &nr) {
nr = 0, sign = 1;
while (f[pos] > '9' || f[pos] < '0') {
if (f[pos] == '-')
sign = -1;
pos++;
if (pos == MAX)
pos = 0, fread(f, 1, MAX, IN);
}
while (f[pos] <= '9' && f[pos] >= '0') {
nr = nr * 10 + f[pos++] - '0';
if (pos == MAX)
pos = 0, fread(f, 1, MAX, IN);
}
nr *= sign;
}
int N, v[MaxN][MaxN];
int main() {
IN = fopen("royfloyd.in", "r");
OUT = fopen("royfloyd.out", "w");
fread(f, 1, MAX, IN);
Read(N);
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++) {
Read(v[i][j]);
if (v[i][j] == 0)
v[i][j] = INF;
}
for (int k = 1; k <= N; k++)
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
if (i != j)
v[i][j] = v[i][k] + v[k][j];
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
if (v[i][j] == INF)
v[i][j] = 0;
fprintf(OUT, "%d ", v[i][j]);
}
fprintf(OUT, "\n");
}
return 0;
}