- ABC026 C - 高橋君の給料 (AtCoder Beginner Contest 026 C問題)
https://atcoder.jp/contests/abc026/tasks/abc026_c
- https://atcoder.jp/contests/abc026/submissions/40923208
- 上司を親とする木構造
- 葉から順に根へと計算していけば良い
- DFS の帰りがけ順で良い
use proconio::{input, marker::Usize1}; fn dfs(dp: &mut Vec<usize>, edges: &Vec<Vec<usize>>, u: usize) { let mut cs = vec![]; for v in edges[u].iter().copied() { dfs(dp, edges, v); cs.push(dp[v]); } dp[u] = *cs.iter().max().unwrap_or(&0) + *cs.iter().min().unwrap_or(&0) + 1; } fn main() { input! { n: usize, b: [Usize1; n - 1] } let mut edges = vec![vec![]; n]; for (i, b_i) in b.iter().copied().enumerate() { edges[b_i].push(i + 1); } let mut dp = vec![0_usize; n]; dfs(&mut dp, &edges, 0); let ans = dp[0]; println!("{}", ans); }
今日のコミット。
- rust-atcoder 1 commit
- tsukota 1 commit