Pagini recente » Cod sursa (job #1177020) | Cod sursa (job #2198939) | Cod sursa (job #2159698) | Cod sursa (job #2506437) | Cod sursa (job #2302757)
/**
C-matrice de input
D-dinamica
D[i][j][k]=Drumul minim de la i la j folosind noduri intermediare din multimea 1...k
D[i][j][0]=C[i][j]
D[i][j][1]=min(D[i][j][0],D[i][1][0]+D[1][j][0])
D[i][j][2]=min(D[i][j][1],D[i][2][0]+D[2][j][0])
D[i][j][k]=min(D[i][j][k-1],D[i][k][k-1]+D[k][j][k-1])
--sau--
pentru eficienta in memorie
La iteratia k:
D[i][k]=Drumul minim de k la i la j folosind noduri intermediare din multimea 1...k
D[i][j]=min(D[i][j],D[i][k]+D[k][j]
*/
#include <iostream>
#include <fstream>
using namespace std;
int C[101][101], D[101][101];
int main()
{
int n;
ifstream fin ("royfloyd.in");
ofstream fout ("royfloyd.out");
fin>>n;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
fin>>D[i][j];
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
D[i][j]=min(D[i][j],D[i][k]+D[k][j]);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
fout<<D[i][j]<<" ";
fout<<"\n";
}
return 0;
}