使用深度优先遍历即可获得两点间的一条路径
定义 Path.h 实现获取路径
#include <stack>
#include <iostream>
#include <cassert>
using namespace std;
template <typename Graph>
class Path{
private:
Graph &G;
int s;
bool *visited;
int *from;
void dfs(int v){
visited[v] = true;
typename Graph::adjIterator adj(G, v);
for ( int i = adj.begin(); !adj.end(); i = adj.next() ){
if ( !visited[i] ){
from[i] = v;