Pagini recente » Cod sursa (job #3293488) | Cod sursa (job #1951216) | Cod sursa (job #1173588) | Cod sursa (job #2584185) | Cod sursa (job #1850741)
#include <iostream>
#include <fstream>
using namespace std;
float A[101][101];
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int n,i,j;
#define PInfinit 1000
void Drum(int i, int j)
{
int k=1, gasit=0;
while((k<=n)&& !gasit)
{
if(i!=k&&j!=k&& A[i][j]==A[i][k]+A[k][j])
{
Drum(i, k);
Drum(k, j);
gasit=1;
}
k++;
}
// if(!gasit)
// g<<j<<" ";
}
void Scriu_drum(int Nod_Initial, int Nod_Final)
{
if(A[Nod_Initial][Nod_Final]<PInfinit)
// {
// g<<" Drumul de la "<<Nod_Initial<<" la "<<Nod_Final<<" are lungimea "<<A[Nod_Initial][Nod_Final]<<"\n";
// g<<Nod_Initial<<" ";
Drum(Nod_Initial, Nod_Final);
// }
// else
// g<<"Nu exista drum de la "<<Nod_Initial<<" la "<<Nod_Final;
}
void Lungime_Drumuri()
{
int i, j, k;
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(A[i][j]>A[i][k]+A[k][j])
A[i][j]=A[i][k]+A[k][j];
}
int main()
{
f>>n;
for(int q=1; q<=n; q++)
for(int q1=1; q1<=n; q1++)
f>>A[q][q1];
Lungime_Drumuri();
Scriu_drum(4, 2);
for(int q=1;q<=n;q++)
{
for(int q1=1;q1<=n;q1++)
g<<A[q][q1]<<" ";
g<<"\n";
}
return 0;
}