求助!跪求巨佬查错!

CF938G Shortest Path Queries

问题已解决…… 错误原因:原代码递归线段树时若 l==r 直接 return 了,便没有 Del 这个节点上的边。 应改成这样:```cpp if (l==r) { for (int i=0;i!=Q[u].size();++i) { int x=Q[u][i].first,y=Q[u][i].second,w=0; x=find(x,w); y=find(y,w); printf("%d\n",query(d,w)); } } if (l<r) { int m=(l+r)>>1; solve(u<<1,l,m,d+1); solve(u<<1|1,m+1,r,d+1); } for (int i=Del[u].size()-1;i>=0;--i) { int x=Del[u][i].first,y=Del[u][i].second; fa[x]=x; W[x]=0; sz[y]-=sz[x]; } ```
by oxbby @ 2021-07-03 07:28:51


|