結果
問題 |
No.3113 The farthest point
|
ユーザー |
|
提出日時 | 2025-04-19 01:01:52 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 954 bytes |
コンパイル時間 | 11,087 ms |
コンパイル使用メモリ | 382,944 KB |
実行使用メモリ | 34,188 KB |
最終ジャッジ日時 | 2025-04-19 01:02:06 |
合計ジャッジ時間 | 13,878 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 WA * 13 |
ソースコード
use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, edges: [(Usize1, Usize1, i64); n - 1], } let mut graph = vec![vec![]; n]; for &(u, v, w) in &edges { graph[u].push((v, w)); graph[v].push((u, w)); } let dist0 = dfs_dist(&graph, 0); let leaf1 = (0 .. n).max_by_key(|&v| dist0[v] ).unwrap(); let dist1 = dfs_dist(&graph, leaf1); let diameter = dist1.into_iter().max().unwrap(); println!("{diameter}"); } const INF: i64 = 1_000_000_000_000_000_000; fn dfs_dist(graph: &[Vec<(usize, i64)>], start: usize) -> Vec<i64> { let mut dist = vec![INF; graph.len()]; dist[start] = 0; let mut stack = vec![(start, start)]; while let Some((u, p)) = stack.pop() { for &(v, w) in &graph[u] { if v == p { continue; } dist[v] = dist[u] + w; stack.push((v, u)); } } dist }