AtCoder Beginner Contest 274 C

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)
}