Контрольная работа: Моделирование систем
for (i=0;i<MaxNodes;i++)
if (Q[i] == 1)
if ( D[i] > D[u]+A[u][i] ) D[i] = D[u] + A[u][i];
}
//Вывод матрицы расстояний от источника
//до всех вершин графа.
cout << "matrix of distanses: \n";
for (i=0;i<MaxNodes;i++) cout << D[i] << " ";
cout << endl;
// -----------------------------------------------------
// Нахождение кратчайшего пути из S в T с использованием
// построенной матрицы расстояний.
// -----------------------------------------------------
cout << "Inpute finish node: ";
cin >> T; T--;
W_S (&Stack,T); v = T;
while ( v!=S )
{
for (i=0;i<MaxNodes;i++)
if ( D[v]==D[i]+A[i][v] ) u = i;
W_S (&Stack,u);
v = u;
}
//Вывод кратчайшего пути на экран дисплея.
cout << "Minimal path: ";
UkZv = Stack;
while ( UkZv != NULL )
{ cout << (UkZv->Element+1) << " ";
UkZv = UkZv->Sled; }