結果
問題 |
No.3113 The farthest point
|
ユーザー |
![]() |
提出日時 | 2025-04-19 00:09:26 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 412 ms / 2,000 ms |
コード長 | 763 bytes |
コンパイル時間 | 12,031 ms |
コンパイル使用メモリ | 234,988 KB |
実行使用メモリ | 23,032 KB |
最終ジャッジ日時 | 2025-04-19 00:09:50 |
合計ジャッジ時間 | 19,173 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
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 }