Pagini recente » Cod sursa (job #2971155) | Cod sursa (job #161999) | Cod sursa (job #2548127) | Cod sursa (job #1000670) | Cod sursa (job #2498319)
#include <bits/stdc++.h>
#define MAX 131072
using namespace std;
const int NMAX = 101;
FILE *IN;
int N;
int mat[NMAX][NMAX];
int pos, sign;
char f[MAX];
inline void Read(int &nr){
sign = 0;
nr = 0;
while(f[pos] < '0' || f[pos] > '9'){
if(f[pos] == '-') sign = 1;
pos++;
if(pos == MAX)
fread(f, MAX, 1, IN), pos = 0;
}
while(f[pos] >= '0' && f[pos] <= '9'){
nr = 10 * nr + f[pos++] - '0';
if(pos == MAX)
fread(f, MAX, 1, IN), pos = 0;
}
if(sign) nr =- nr;
}
void read(){
Read(N);;
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++){
Read(mat[i][j]);
if(!mat[i][j])
mat[i][j] = 2e9;
}
}
int main(){
IN = fopen("royfloyd.in", "r");
freopen("royfloyd.out", "w", stdout);
read();
for(int k = 1; k <= N; k++)
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
if(mat[i][k] + mat[k][j] < mat[i][j] && mat[i][k] != 2e9 && mat[k][j] != 2e9 && i != j)
mat[i][j] = mat[i][k] + mat[k][j];
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++)
if(mat[i][j] != 2e9)
printf("%d ", mat[i][j]);
else printf("0 ");
printf("\n");
}
return 0;
}