C++ 如何找到BFS找到的实际路径?

C++ 如何找到BFS找到的实际路径?,c++,algorithm,path,breadth-first-search,C++,Algorithm,Path,Breadth First Search,我试图解决的问题涉及捷运系统的树 每个节点最多可以连接4个点,简化了很多事情。这是我的想法 struct stop { int path, id; stop* a; stop* b; stop* c; stop* d; }; 我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要关心的是,即使BFS正确地找到了点,我如何知道它的路径 BFS将搜索每个级别,当其中一个级别到达我的目的地时,它将跳出运行循环,然后,我将得到一个已访问队列和一个未访问队列

我试图解决的问题涉及捷运系统的树

每个节点最多可以连接4个点,简化了很多事情。这是我的想法

struct stop {
    int path, id;
    stop* a;
    stop* b;
    stop* c;
    stop* d;
};
我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要关心的是,即使BFS正确地找到了点,我如何知道它的路径


BFS将搜索每个级别,当其中一个级别到达我的目的地时,它将跳出运行循环,然后,我将得到一个已访问队列和一个未访问队列,当已访问队列充满BFS搜索的每个节点时,我该如何告诉用户他需要访问哪些站点,您需要存储一个
映射:V->V
(从顶点到顶点),它将从每个节点
V
映射,“发现”的顶点
u

您将在BFS迭代期间填充此映射

稍后-您可以通过简单地从目标节点(在地图中)一直到返回到源节点来重建路径,这将是您的路径(当然是反向的)


请注意,如果您枚举顶点,此地图可以实现为一个数组。

忽略的中文单词在哪里?@mahmood在我发布的图像上。嘿,如果我必须跟踪一些长度的多条路径怎么办?@Bewishaman这是一个更难的问题。对于某些
k
,查找是否存在长度为
k
的路径是NP难问题(没有已知的多项式解)