vector<int> graph[MAXN]; //邻接表
vector<int> path;
void dfs(int nowi) {
if (nowi == 结束条件) {
path.push_back(nowi); //将叶子结点加入路径
//处理此时path中保存的路径
path.pop_back(nowi);
return;
}
//(1)进入
path.push_back(nowi);
for (int i = 0; i < graph[nowi].size(); i++) {
int newi = graph[nowi][i];
dfs(newi);
}
//(2)回溯
//newi结点已经处理完, 此时回溯到nowi结点时将该结点移出路径
path.pop_back(nowi);
}
int main() {
dfs(0);
}