teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

実装例追加

2022/01/11 12:06

投稿

actorbug
actorbug

スコア2515

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