这个题目在往上跳重链时如果ans不为-1时就直接返回,不要跑到最后,不然会TLE
错误示范
int road_query(int u)
{
int ans = -1;
while(top[u] != 1)
{
ans = max(ans,query(dfn[top[u]],dfn[u],1,n,1));
u = f[top[u]];
}
return max(ans,query(1,dfn[u],1,n,1));
}
AC代码
int road_query(int u)
{
int ans = -1;
while(top[u]!=1)
{
ans = max(ans,query(dfn[top[u]],dfn[u],1,n,1));
u = f[top[u]];
if(ans != -1) return ans;
}
return max(ans,query(1,dfn[u],1,n,1));
}