HDU 2586 How far away ?
【题目大意】:
一个村子里有n个房子,这n个房子用n-1条路连接起来,接下来有m次询问,每次询问两个房子a,b之间的距离是多少。
【分析】:
这是个求最近公共祖先的问题,用临接链表存下每条边和询问的信息,然后跑一遍Tarjan(算法详解见:http://blog.csdn.net/csyzcyj/article/details/10051173),最后对于询问i,j的LCA,答案为dist[i]+dist[j]-2*dist[LCA(i,j)],这里dist[i]为i点到1号根节点的距离
【代码】:用时31MS,好像将更新LCA操作整体放后面也行
#include<stdio.h&