我的倍增
bool work(int d,int a,int c)
{
if(a==d) return 1;
for(int j=20;j>=0;j--)
{
if(dep[fa[a][j]]>dep[c]&&dep[fa[a][j]]>dep[d]) a=fa[a][j];
}
return fa[a][0]==d;
}
其中c表示当前a点与另一个点的lca,d表示另外一对点的lca,这样写是70分
bool work(int d,int a,int c)
{
if(a==d) return 1;
for(int j=20;j>=0;j--)
{
if(dep[fa[a][j]]>=dep[c]&&dep[fa[a][j]]>=dep[d]) a=fa[a][j];
}
return a==d;
}
但这样就过了