第一种:
inline void dfs(rint u, rint edge)
{
if (edge) print(edge, ' ');
while (g[u].size())
{
rint v = g[u].back().to, id = g[u].back().id;
g[u].pop_back(); dfs(v, id);
}
}
第二种:
inline void dfs(rint u, rint edge)
{
while (g[u].size())
{
rint v = g[u].back().to, id = g[u].back().id;
g[u].pop_back(); dfs(v, id);
}
if (edge) s[++ tp] = edge;
}
......
for (rint i = m; i; -- i) print(s[i], ' ');
rt,第一种只有37分,第二种过了,求助这两种dfs什么时候结果不一样。