我的 n5 做法,四层循环枚举路径端点。然后无脑判断,但是遇到了瓶颈。
问题1.如何判断两路径有交(已解决)
问题2.如何在两路径有交的情况下找到路径交的两个端点?(未解决)
当时写了一个代码。假设两条路径为a-b和c-d。
但貌似不对。比如a=1,b=4,c=2,d=4的时候,跑出来两个端点是1,4。
void work(int a,int b,int c,int d)
{
temp1=LCA(a,c);
temp2=LCA(a,d);
lca1=dep[temp1]>dep[temp2]?temp1:temp2;
temp1=LCA(b,c);
temp2=LCA(b,d);
lca2=dep[temp1]>dep[temp2]?temp1:temp2;
}