INNER CODE UNIT · JavaScript
a
lh3/pangene · pangene.js:574
let a = this.arc[off + i];
stack.push([w, i + 1]); // repush to the stack
if (a.dfs_type == 3) continue;
const u = a.w;
if (state[u] == 0) { // not visited before
state[u] = 2; // in stack
this.dfs_dis[u] = t.dis++;
this.dfs_par[u] = w;
stack.push([u, 0]);
a.dfs_type = 1; // a tree edge
this.arc[a.pair].dfs_type = 3; // wont' traverse this edge
} else if (state[u] == 2) {
a.dfs_type = 2; // a back edge
this.arc[a.pair].dfs_type = 3;
}
} else {
state[w] = 1; // out of stack
this.dfs_fin[w] = t.fin++;