对于这个函数,把任一注释删掉就会爆栈,不清楚原因
void dfs(int u,int fa){
int tot=0,cnt=0,maxn1=0,maxn2=0,sum=0,ab=0;
cout<<114514<<"\n";
int js[N]={0};
for(int v:e[u]){
if(v==fa)continue;
tot++,dfs(v,u);
js[++js[0]]=max(f[v][0][2],f[v][1][2]);
}if(!tot){
f[u][0][1]=f[u][1][1]=0,f[u][1][2]=f[u][0][2]=a[u];
return;
}
// sort(js+1,js+1+js[0]);
// for(int i=js[0];i;i--)
// if(i>=js[0]-1||js[i]>=0)sum+=js[i],ab=i;
// if(js[0]>=2&&fa!=-1)f[u][0][2]=sum+a[u];
// if(js[0]>=3&&ab>js[0]-2)sum+=js[ab-1];
// if(js[0]>=3)f[u][0][1]=sum+a[u];
// else f[u][0][1]=0;
// if(js[0]>=2)f[u][1][1]=max(0*1ll,js[js[0]]+js[js[0]-1]);
// if(js[0]>=1&&fa!=-1)f[u][1][2]=js[js[0]];
}