https://atcoder.jp/contests/abc274/tasks/abc274_c
ただのDPですね。
// Ameba #![allow(non_snake_case)] fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line.trim().parse().ok().unwrap() } fn read_vec<T: std::str::FromStr>() -> Vec<T> { read::<String>().split_whitespace() .map(|e| e.parse().ok().unwrap()).collect() } fn read_input() -> Vec<usize> { let _N: usize = read(); let A = read_vec(); A } fn f(A: Vec<usize>) { let N = A.len(); let mut G: Vec<usize> = (0..(N*2+1)).collect(); for i in 0..N { G[i*2+1] = G[A[i]-1] + 1; G[i*2+2] = G[A[i]-1] + 1 } for g in G.iter() { println!("{}", g) } } fn main() { let A = read_input(); f(A) }