Cod sursa(job #391289)

Utilizator nautilusCohal Alexandru nautilus Data 5 februarie 2010 13:47:17
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream.h>
#define dmax 102

long a[dmax][dmax];

int main()
{
 long n,i,j,k;
	
 ifstream fin("royfloyd.in");
 fin>>n;
 for (i=1; i<=n; i++)
	 for (j=1; j<=n; j++)
		 fin>>a[i][j];
	 
 for (i=1; i<=n; i++) /*intermediar*/
	 for (j=1; j<=n; j++)
		 for (k=1; k<=n; k++)
			 if (a[j][i]!=0 && a[i][k]!=0 && (a[j][i]+a[i][k]<a[j][k] || a[i][j]==0) && k!=j) /*daca exista muchie (de la j la i) si (de la i la k) si daca este mai bine sa trec prin intermediar si nu ma aflu in poz din matrice de tipul a[i][i]*/
				 a[j][k]=a[j][i]+a[i][k];

 ofstream fout("royfloyd.out");
 for (i=1; i<=n; i++)
	 {
	  for (j=1; j<=n; j++)
		  fout<<a[i][j]<<" ";
	  fout<<'\n';
	 }
 
 fin.close();
 fout.close();
	
 return 0;
}