INNER CODE UNIT · JavaScript
cec
lh3/pangene · pangene.js:654
let cec = 1; // cycle equivalent class; class 0 is reserved for tree edges not in cycles
for (let t = v_dis.length - 1; t >= 0; --t) {
const v = v_dis[t];
const n = this.idx[v].n, off = this.idx[v].o;
// compute hi0, the earliest discovery time among back edges
let hi0 = this.n_node;
for (let i = 0; i < n; ++i) { // traverse back edges
if (this.arc[off + i].dfs_type !== 2) continue;
const w = this.arc[off + i].w;
if (v === w) continue;
hi0 = hi0 < this.dfs_dis[w]? hi0 : this.dfs_dis[w];
}
// compute hi1 and hi2, the earliest and the second earliest time among descendants
let hi1 = this.n_node, hi2 = this.n_node;
let blist = new LinkedList(); // initial bracket list
for (let i = 0; i < n; ++i) { // traverse tree edges