Pagini recente » Cod sursa (job #1000384) | Cod sursa (job #736102) | Cod sursa (job #3277635) | Cod sursa (job #795373) | Cod sursa (job #679115)
Cod sursa(job #679115)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int min(int a, int b){
if(a < b)
return a;
return b;
}
int main(int argc, char** argv){
int N,i,j,k;
FILE *fr = fopen("royfloyd.in", "r");
FILE *fw = fopen("royfloyd.out", "w");
fscanf(fr, "%d", &N);
int graph[N][N];
for(i = 0; i < N; i++) {
for(j = 0; j < N; j++) {
fscanf(fr, "%d", &graph[i][j]);
if(graph[i][j] == 0 && i != j)
graph[i][j] = INT_MAX;
}
}
fclose(fr);
int aux[N][N];
for(k = 0; k < N; k++) {
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
aux[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]);
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
if(i != j)
graph[i][j] = aux[i][j];
}
for(i = 0; i < N; i++) {
for(j = 0; j < N; j++)
fprintf(fw, "%d ", graph[i][j]);
fprintf(fw, "\n");
}
fclose(fw);
}