The main topic: given the tree of n nodes, the tree has the edge, now given a point U and V,dis (U,v) represents the closest distance between the U and V nodes, ask Dis (u,v) <=k the UV logarithm, n <= 10,000, K variable, weight <=1000.
Orz look at the code to understand, first find out the center of the tree (or centroid?) ) to avoid the tree becoming a chain that makes the algorithm degenerate. Turn a tree without roots into a tree. Then find out the distance from the root node, can calculate the TMP, D (u) +d (v) <=k logarithm, can do O (n) statistics, and then calculate the same subtree in the repetition of the TMP2, then through the root node is TMP-TMP2.
In this case, the recursive calculation will be OK, the complexity will not count, but it seems to be better than O (n^2)
http://blog.csdn.net/woshi250hua/article/details/7723400
poj1741: Tree dp (VIP)