Cod sursa(job #180960)

Utilizator raresjuniorSfirlogea Rares raresjunior Data 17 aprilie 2008 18:30:17
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
FILE *f=fopen("royfloyd.in","r"),*g=fopen("royfloyd.out","w");
int a[101][101],n;
int main()
{
int i,j,k;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
        {
        for(j=1;j<=n;j++)
		fscanf(f,"%d",&a[i][j]);
        }

//afisare inainte d aplicarea alg
/*for(i=1;i<=n;i++)
        {
        for(j=1;j<=n;j++)
                {
                fprintf(g,"%d ",a[i][j]);
                }
        fprintf(g,"\n");
        }
*/

for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                        {
                        if(i!=k && k!=j && i!=j)
                                {
                                if(a[i][k]*a[k][j] && (a[i][j]==0||a[i][j]>a[i][k]+a[k][j]))
                                        a[i][j]=a[j][i]=a[i][k]+a[k][j];
                                }
                        }

//afisare dupa aplicarea alg
fprintf(g,"\n");
for(i=1;i<=n;i++)
        {
        for(j=1;j<=n;j++)
                {
                fprintf(g,"%d ",a[i][j]);
                }
        fprintf(g,"\n");
        }

fclose(f);
fclose(g);
return 0;
}