Pagini recente » Borderou de evaluare (job #1217963) | Borderou de evaluare (job #3041569) | Cod sursa (job #3239423) | Utilizatori inregistrati la Infoarena Monthly 2014 - Runda 1 | Cod sursa (job #2115119)
#include <stdio.h>
#include <stdlib.h>
#define INF 1001 //infinit ( 1000 = maximul valorii)
#define NIL -1
void afisare(int n, int a[n][n])
{
int i,j;
for(i =0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d ", a[i][j]);
}
printf("\n");
}
int main()
{
FILE *f = fopen("royfloyd.in", "r");
FILE *g = fopen("royfloyd.out","w");
int n, i, j, k;
fscanf(f, "%d", &n);
int a[n][n], d[n][n], pi[n][n];
for(i =0;i<n;i++)
for(j=0;j<n;j++)
fscanf(f, "%d", &a[i][j]);
for(i =0;i<n;i++)
for(j=0;j<n;j++)
if(a[i][j] == 0)
{
if(i != j)
d[i][j] = INF;
else
d[i][j] = 0;
pi[i][j] = NIL;
}
else
{
d[i][j] = a[i][j];
pi[i][j] = i;
}
for(k=0; k<n; k++)
for(i=0; i<n; i++)
if( i != k)
for(j=0; j<n; j++)
if(d[i][k] != INF && d[k][j] != INF && d[i][j] > d[i][k] + d[k][j])
{
d[i][j] = d[i][k] + d[k][j];
pi[i][j] = pi[k][j];
}
for(i =0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(d[i][j] == INF)
d[i][j] = 0;
fprintf(g,"%d ", d[i][j]);
}
fprintf(g,"\n");
}
fclose(f);
fclose(g);
return 0;
}