rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn num_of_minutes(n: i32, _: i32, mut manager: Vec<i32>, mut inform_time: Vec<i32>) -> i32 {
        let n = n as usize;
        let mut res = 0;
        for i in 0..n {
            res = res.max(Self::dfs(i, &mut manager, &mut inform_time));
        }
        res
    }

    fn dfs(i: usize, manager: &mut Vec<i32>, inform_time: &mut Vec<i32>) -> i32 {
        if manager[i] != -1 {
            inform_time[i] += Self::dfs(manager[i] as usize, manager, inform_time);
            manager[i] = -1;
        }
        inform_time[i]
    }
}

#[test]
fn test() {
    let n = 1;
    let head_id = 0;
    let manager = vec![-1];
    let inform_time = vec![0];
    let res = 0;
    assert_eq!(
        Solution::num_of_minutes(n, head_id, manager, inform_time),
        res
    );
    let n = 6;
    let head_id = 2;
    let manager = vec![2, 2, -1, 2, 2, 2];
    let inform_time = vec![0, 0, 1, 0, 0, 0];
    let res = 1;
    assert_eq!(
        Solution::num_of_minutes(n, head_id, manager, inform_time),
        res
    );
    let n = 7;
    let head_id = 6;
    let manager = vec![1, 2, 3, 4, 5, 6, -1];
    let inform_time = vec![0, 6, 5, 4, 3, 2, 1];
    let res = 21;
    assert_eq!(
        Solution::num_of_minutes(n, head_id, manager, inform_time),
        res
    );
    let n = 15;
    let head_id = 0;
    let manager = vec![-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6];
    let inform_time = vec![1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0];
    let res = 3;
    assert_eq!(
        Solution::num_of_minutes(n, head_id, manager, inform_time),
        res
    );
    let n = 4;
    let head_id = 2;
    let manager = vec![3, 3, -1, 2];
    let inform_time = vec![0, 0, 162, 914];
    let res = 1076;
    assert_eq!(
        Solution::num_of_minutes(n, head_id, manager, inform_time),
        res
    );
}