摘要: 纠结的问题。做了两天,还是在拜读大牛代码的情况下ac的。好好谢谢总结吧。 诸位大牛的思路是两次dfs。前提:建树的时候按无向边从上往下建。第一次dfs是搜出一个根结点到其他结点的最长路径和次长路径(次长路径不是最长路径的子路径,也就是说不在同一条路上。) 一个结点到其他结点的最长路径怎么得到?1、可能是从这个结点往下取到最长路径。2、可能是从这个结点的父结点上选去另一条路径。 当情况一时:第一次dfs所得的最长路径就是要求的结果。当情况二时:第一次dfs所得的次长路径就是所求结果。 另外,因为是无向边建树,所以第一次dfs从下往上搜,第二次dfs从上往下搜。 具体实现:定义dp[... 阅读全文
posted @ 2012-01-07 17:13 AC_Von 阅读(379) 评论(0) 推荐(0) 编辑