如果你稳定错在第 2448 行,那么恭喜你来对地方了。
在询问为单点修改时,将代码中的:
scanf("%s%d%d", &opt, &x, &y);
.....
SGT.modify(dfn[fa[x]], y);
val[fa[x]] = y, val[x] = y;
改成
SGT.modify(dfn[fa[x]], *st[fa[x] - n].begin());
val[fa[x]] = *st[fa[x] - n].begin(), val[x] = y;
原因不多赘述,应该是低级问题。当然如果不是这个原因可以看这个帖子。