python 深度优先遍历
最长路径
http://www.nowcoder.com/questionTerminal/430ded6b482d4d8bbcf2eca6f20e62e3
使用深度优先遍历
没看到详细题解,自己写一个 ==
- 先使用邻接表存储
- 深度优先遍历,求解所有路径最大值和
- 代码如下,有注释
class Solution: def solve(self , n , u , v , w ): # write code here def dfs(u): res = 0 # 记录以当前结点u为出发点的所有路径中最大的路径值 state[u] = True for nex in graph[u]: # 深度遍历以u为出发点的所有路径 if not state[nex[0]]: # 如果此结点未被访问,则深度遍历此节点 temp = dfs(nex[0])+ nex[1] # temp为当前路径的值 self.ans = max(self.ans, temp+res) # 最大路径就是u为出发点 当前路径的值(temp)+u为出发点 其他u为出发点(res) res = max(temp,res)# 每求出一个以u为出发点的路径值(temp),就更新一下u return res # 返回以u为出发点的所有路径最大值 graph = [[] for _ in range(n+1)] for i in range(n-1): graph[u[i]].append((v[i], w[i])) graph[v[i]].append((u[i], w[i])) state = [False]*(n+1) self.ans = 0 dfs(1) return self.ans