Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Djikstra算法_C++_Algorithm_Data Structures_Dijkstra_Shortest Path - Fatal编程技术网

C++ Djikstra算法

C++ Djikstra算法,c++,algorithm,data-structures,dijkstra,shortest-path,C++,Algorithm,Data Structures,Dijkstra,Shortest Path,我使用Dijkstra计算最短路径的函数,但是代码在一些测试用例中给出了一些错误。我无法找出代码中的逻辑错误。任何帮助都将不胜感激 int minDistance(int *dist, bool *includ,int no_of_vertices); int* shortestDist(int** graph, int src, int no_of_vertices) { int u,a=no_of_vertices; int min = MAXval;int min_

我使用Dijkstra计算最短路径的函数,但是代码在一些测试用例中给出了一些错误。我无法找出代码中的逻辑错误。任何帮助都将不胜感激

 int minDistance(int *dist, bool *includ,int no_of_vertices);
int* shortestDist(int** graph, int src, int no_of_vertices)
{
     int u,a=no_of_vertices;
     int min = MAXval;int  min_index;
     int* dist= new int[no_of_vertices];     

     bool *includ = new bool[no_of_vertices]; 

     for (int i = 0; i < a ; i++)
       { dist[i] = MAXval;
        includ[i] = false;}


     dist[src] = 0;


     for (int count = 0; count < a-1; count++)
     {


      int u = minDistance(dist, includ,a);

       includ[u] = true;


       for (int v = 0; v < a; v++)


         if (!includ[v] && graph[u][v]  && ((dist[u]+graph[u][v]) < dist[v]))
            dist[v] = dist[u] + graph[u][v];

    }

     return dist;

}
int minDistance(int *dist, bool *includ,int no_of_vertices)
{            


   int min = MAXval;int min_index;

   for (int v = 0; v < no_of_vertices; v++)
   {
     if (includ[v] == false && dist[v] <= min)
         min = dist[v]; min_index = v;
 }
   return min_index;
}
预期o/p

0:5
1:1
2:0
实际o/p

0:1000
1:1
2:0
minDistance()


if(includ[v]==false&&dist[v]有什么错误?请提供一个“请调试我的程序”堆栈溢出问题是不允许的。我不是要求调试程序。我只是要求指出任何逻辑错误(如果发现)。你是如何通灵的?我以为你很傻,但显然不是因为我在任何地方都看不到代码。
0:1000
1:1
2:0
 if (includ[v] == false && dist[v] <= min)
     min = dist[v]; min_index = v;