Я изучаю структуры данных. Графы столкнулись с проблемой Дейкстры.Я не получаю желаемый результат.Я пытаюсь распечатать краткий путь, но не получаю правильных результатов, пожалуйста, помогите мне.программа принимает входные данные для матрицы затрат, а также для матрицы пути и находит кратчайший путь.
#include<stdio.h>
int main()
{
int cost[10][10], path[10][10], distance[10];
int i, j, n, visit_node, paths, row, column, min, Index;
printf("Enter number of nodes!\n");
scanf("%d", &n);
printf("Enter cost matrix!\n");
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d", &cost[i][j]);
}
}
//reading path matrix
printf("\nEnter the node you want to visit: ");
scanf("%d", &visit_node);
printf("\nEnter paths for entered node: ");
scanf("%d", &paths);
printf("\nEnter path matrix");
for(i=1; i<=paths; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d",&path[i][j]);
}
}
for(i=1; i<=paths; i++)
{
distance[i] = 0;
row = 1;
for(j<1; j<=n; j++)
{
if(row!=visit_node)
{
column = path[i][j+1];
distance[i] = distance[i] + cost[row][column];
}
row = column;
}
}
min = distance[1];
for(i=1; i<=paths; i++)
{
if(distance[i]<=min)
{
min = distance[i];
Index = i;
}
}
printf("\nThe minimum distance value of %d", min);
printf("\nminimum distance path is: ");
for(i=1; i<=paths; i++)
{
if((path[Index][i])!=0)
{
printf("%d---->", path[Index][i]);
}
}
}