Depth check no longer checks depth but counts upstream nodes

quickdudley
Jan 28, 2022, 3:08 AM
PEZZUG3QITDR5JYBRGMMM6H7J6UX4A4Y5CHKJPQSBHSQDBTQXKSQC

Dependencies

  • [2] 5OUVESUQ Attempt to reduce additional manual comparison upon resume

Change contents

  • edit in src/depth_check.rs at line 1
    [2.1267]
    [2.1268]
    use std::collections::HashSet;
    use std::iter::once;
  • replacement in src/depth_check.rs at line 7
    [2.1361][2.1361:1430]()
    let mut workspace = Vec::new();
    let mut result = Vec::new();
    [2.1361]
    [2.1430]
    let mut dag = Vec::new();
    let mut descent = Vec::new();
  • replacement in src/depth_check.rs at line 10
    [2.1471][2.1471:1580]()
    while workspace.len() <= worse {
    workspace.push(Vec::new());
    result.push(0);
    [2.1471]
    [2.1580]
    while dag.len() <= worse {
    dag.push(Vec::new());
    descent.push(HashSet::new());
  • replacement in src/depth_check.rs at line 14
    [2.1590][2.1590:1629]()
    workspace[worse].push(better);
    [2.1590]
    [2.1629]
    dag[worse].push(better);
  • replacement in src/depth_check.rs at line 17
    [2.1684][2.1684:1749]()
    (0..workspace.len()).rev().map(|x| (x, None)).collect();
    [2.1684]
    [2.1749]
    (0..dag.len()).rev().map(|x| (x, None)).collect();
  • replacement in src/depth_check.rs at line 19
    [2.1792][2.1792:1843]()
    let d = std::mem::take(&mut workspace[i]);
    [2.1792]
    [2.1843]
    let d = std::mem::take(&mut dag[i]);
  • replacement in src/depth_check.rs at line 26
    [2.2019][2.2019:2073]()
    result[s] = result[s].max(result[i] + 1);
    [2.2019]
    [2.2073]
    let e: HashSet<_> =
    once(i).chain(descent[i].iter().copied()).collect();
    descent[s].extend(e);
  • replacement in src/depth_check.rs at line 31
    [2.2089][2.2089:2100]()
    result
    [2.2089]
    [2.2100]
    descent.into_iter().map(|d| d.len()).collect()