INNER CODE UNIT · JavaScript
blist
lh3/pangene · pangene.js:670
let blist = new LinkedList(); // initial bracket list
for (let i = 0; i < n; ++i) { // traverse tree edges
if (this.arc[off + i].dfs_type !== 1) continue;
const w = this.arc[off + i].w;
if (hi1 > vs[w].hi) hi2 = hi1, hi1 = vs[w].hi;
else if (hi2 > vs[w].hi) hi2 = vs[w].hi;
blist.push_list(vs[w].blist); // merge blists from v's children
}
vs[v].hi = hi0 < hi1? hi0 : hi1;
// compute the final bracket list
for (const b of vs[v].be_end_cap) // delete capping back edges ending at v
blist.delete(b);
for (const b of vs[v].be_end) { // delete (normal) back edges ending at v
blist.delete(b);
if (this.arc[b.a].cec < 0)
this.arc[b.a].cec = cec++;
}