回答編集履歴

1

実装例追加

2022/01/11 12:06

投稿

actorbug
actorbug

スコア2224

test CHANGED
@@ -1 +1,31 @@
1
1
  `Vertex`の`prev`に直前の頂点が入っているのだから、終点から`prev`を順番にたどったうえで逆順に表示する関数を作って、終点に到達したときだけ呼び出せばよいでしょう。
2
+
3
+
4
+
5
+ 実装例
6
+
7
+ ```c++
8
+
9
+ void Graph::PrintRoute(Vertex* ve) {
10
+
11
+ vector<Vertex*> route;
12
+
13
+ for (Vertex* v = ve; v != NULL; v = v->prev)
14
+
15
+ route.push_back(v);
16
+
17
+ for (auto i = route.rbegin(); i != route.rend(); ++i) {
18
+
19
+ if ((*i)->prev)
20
+
21
+ cout << "-(" << (*i)->con << ")-";
22
+
23
+ cout << (*i)->name;
24
+
25
+ }
26
+
27
+ cout << endl << endl;
28
+
29
+ }
30
+
31
+ ```