树上主席树建树顺序不是 $1 \rightarrow n$ 而是 dfs 序@[HAuCl4](/user/289304)
by Licykoc @ 2022-10-15 22:33:35
@[Licykoc](/user/175456) 还是[RE](https://www.luogu.com.cn/record/90089314)
(另,我本来应该也算是按dfn建的(?))
修改了:
```cpp
int dep[N],fa[N],son[N],sz[N],rk[N],dfn[N],num=0;
void dfs1(int u,int f,int d)
{
dep[u]=d; fa[u]=f; sz[u]=1;
dfn[u]=++num; rk[num]=u;
for(int i=hd[u];i;i=nxt[i])
{
int v=to[i];
if(v==f) continue;
dfs1(v,u,d+1);
sz[u]+=sz[v];
if(sz[v]>sz[son[u]]) son[u]=v;
}
}
```
```cpp
for(int i=1;i<=n;i++) update(rt[fa[rk[i]]],rt[rk[i]],1,nz,c[i]);
```
by HAuCl4 @ 2022-10-15 22:53:56
弱智错误,此贴终结。
```cpp
for(int i=1;i<=n;i++) update(rt[fa[rk[i]]],rt[rk[i]],1,nz,c[rk[i]]);//原来写的是c[i]
```
调了3天qwq
by HAuCl4 @ 2022-10-17 22:32:46