Cod sursa(job #151474)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 8 martie 2008 11:24:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>

//using namespace std;

int a[100][100];

int main()
{
    freopen("royfloyd.in","r",stdin);
    int n=0;
    scanf("%d", &n);
    int i,j;
    for (i=0; i<n; i++)
	for (j=0; j<n; j++)
	    scanf("%d", &a[i][j]);
    fclose(stdin);
/*    for (int k=0; k<n; k++)
	for (i=0; i<n; i++)
	    for (j=0; j<n; j++)
		if ((!a[i][j] || a[i][j]<a[i][k]+a[k][j]) && a[i][k] && a[k][j] &&i!=j)
		    a[i][j]=a[i][k]+a[k][j];*/
    for (int k=0; k<n; k++)
	for (i=0; i<n; i++)
	    for (j=0; j<n; j++)
                if ((a[i][j]>a[i][k]+a[k][j] || a[i][j]==0) && a[i][k]!=0 && a[k][j]!=0 && i!=j)
                    a[i][j]=a[i][k]+a[k][j];

    freopen("royfloyd.out","w",stdout);
    for (i=0; i<n; i++)
    {
	for (j=0; j<n; j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    fclose(stdout);
    return 0;
}