use std::io::stdin; fn main() { let mut input = String::new(); stdin().read_line(&mut input).unwrap(); let nodes: usize = input.trim_end().parse().unwrap(); let mut root = 50; let mut tree = [[false; 50]; 50]; input.clear(); stdin().read_line(&mut input).unwrap(); for (child, parent) in input .trim_end() .split_ascii_whitespace() .map(|s| s.parse::<i32>()) .flatten() .enumerate() { if parent >= 0 { tree[parent as usize][child] = true; } else { root = child; } } input.clear(); stdin().read_line(&mut input).unwrap(); let remove: usize = input.trim_end().parse().unwrap(); if remove == root { println!("0"); } else { let mut visit = Vec::<usize>::new(); let mut leaves = 0; visit.push(root); while !visit.is_empty() { let parent = visit.pop().unwrap(); let mut found = false; for child in 0..nodes { if tree[parent][child] && child != remove { found = true; visit.push(child); } } if !found { leaves += 1; } } println!("{}", leaves); } }