C++ C++;图算法的实现

C++ C++;图算法的实现,c++,graph,breadth-first-search,C++,Graph,Breadth First Search,我正在尝试实现,以便找到两个顶点之间的最短距离。我开发了一个队列对象来保存和检索对象,我有一个二维数组来保存两个给定顶点之间的边的长度。我试图填充二维数组以保持两个顶点之间的最短距离 然而,我遇到的问题是,无论我请求哪两个顶点的最短距离为0,都会返回0。这里是我的算法实现;如果你能让我走上正轨,帮我解决问题,那就太好了 for (int i = 0; i < number_of_vertex; i++) //For every vertex, so that we may fill

我正在尝试实现,以便找到两个顶点之间的最短距离。我开发了一个队列对象来保存和检索对象,我有一个二维数组来保存两个给定顶点之间的边的长度。我试图填充二维数组以保持两个顶点之间的最短距离

然而,我遇到的问题是,无论我请求哪两个顶点的最短距离为0,都会返回0。这里是我的算法实现;如果你能让我走上正轨,帮我解决问题,那就太好了

 for (int i = 0; i < number_of_vertex; i++) 
 //For every vertex, so that we may fill   the array
 {
  int[] dist = new int[number_of_vertex]; 
  //Initialize a new array to hold the values for the distances

for (int j = 0; x < number_of_vertex; j++)
{
    dist[j] = -1; 
   //All distance values will be set to -1 by default; this will be changed later on
 }

  dist[i] = 0; //The source node's distance is set to 0 (Pseudocode line 4)

   myQueue.add(i); //Add the source node's number to the queue (Pseudocode line 3)

   while (!myQueue.empty()) //Pseudocode line 5
   {
      int u = myQueue.eject(); //Pseudocode line 6

      for (int y = 0; y < number_of_vertex; y++) //Pseudocode line 7
      {
          if (edge_distance(u,y) > 0)
          {
              if (dist[y] == -1)
              {
                  myQueue.add(y);
                  dist[y] = dist[u] + 1;
                  shortest_distance[i][u] = dist[y];
               }
           }    
        }                 
     }  
}
for(int i=0;i0)
{
如果(距离[y]=-1)
{
添加(y);
距离[y]=距离[u]+1;
最短距离[i][u]=距离[y];
}
}    
}                 
}  
}

好的。。。我想问题在于使用的算法和使用的术语

“为了找到两个顶点之间的最短距离”,您是指连通图中两个顶点之间的最短路径

您试图编写的算法是Dijkstra算法(这是名称)


好的。。。我想问题在于使用的算法和使用的术语

“为了找到两个顶点之间的最短距离”,您是指连通图中两个顶点之间的最短路径

您试图编写的算法是Dijkstra算法(这是名称)


std::queue有什么问题?没什么;我刚刚有一个自定义的队列类,大约一年前我为一个作业做了这个类。这一切都很完美,所以我想,呃,为什么不呢?我不理解你的for循环,你应该有所有距离的数组,不仅仅是一个顶点,每次你在启动时将节点的距离设置为零,什么时候你会得到输出?写完整的代码(你的电脑在哪里?)。std::queue有什么问题吗?没什么;我刚刚有一个自定义的队列类,大约一年前我为一个作业做了这个类。这一切都很完美,所以我想,呃,为什么不呢?我不理解你的for循环,你应该有所有距离的数组,不仅仅是一个顶点,每次你在启动时将节点的距离设置为零,什么时候你会得到输出?写完整的代码(你的电脑在哪里?),我不认为使用的算法有问题;我应该能够用这个算法解决这个问题,而不必求助于其他算法。对于距离,edge_Distance[][]数组返回任意两个顶点之间的距离;最短_距离[][]数组是我试图使用该算法填充的数组(因此不仅是距离,而且是最短距离);我应该能够用这个算法解决这个问题,而不必求助于其他算法。对于距离,edge_Distance[][]数组返回任意两个顶点之间的距离;最短_距离[][]数组是我试图使用该算法填充的数组(因此不仅是距离,而且是最短距离)。