package main import . "fmt" import . "os" import bf "bufio" func main() { rd:=bf.NewReader(Stdin) var n int Fscan(rd,&n) g := make([][]*Edge, n+1) for i := 1; i < n; i++ { var u,v,w int Fscan(rd,&u,&v,&w) g[u] = append(g[u], &Edge{v, w}) g[v] = append(g[v], &Edge{u, w}) } // ググった結果、自己ループなしの頂点数1個でもパスと呼ぶらしい…知らんがな… var ans int visited := make([]bool, n+1) var dfs func(i int) int dfs = func(i int) int { visited[i] = true weight := 0 for _, e := range g[i] { if visited[e.to] { continue } w := dfs(e.to)+e.weight ans = max(ans, weight+w) weight = max(weight, w) } return weight } dfs(1) Println(ans) } type Edge struct { to, weight int }