关于hierholzer 算法,从起点开始DFS,遍历完u的所有出边后把遍历到的每个点放入栈中,再翻转。那么对于一个欧拉图,为什么不能直接再遍历v之前就存储u,也就是这样:
void dfs(int u) {
ans[++tp] = u;
while(g[u].size()) {
int v = g[u][g[u].size() - 1].first, id = g[u][g[u].size() - 1].second; g[u].pop_back();
if(vis[id]) continue;
vis[id] = 1;
dfs(v);
}
}
然而试了一下发现错的。求助是为什么