Files
Cloud-book/node_modules/graphlibrary/lib/alg/components.js
2025-08-27 17:10:05 +08:00

28 lines
439 B
JavaScript

var _ = require('../lodash')
module.exports = components
function components (g) {
const visited = {}
const cmpts = []
let cmpt
function dfs (v) {
if (_.has(visited, v)) return
visited[v] = true
cmpt.push(v)
_.each(g.successors(v), dfs)
_.each(g.predecessors(v), dfs)
}
_.each(g.nodes(), function (v) {
cmpt = []
dfs(v)
if (cmpt.length) {
cmpts.push(cmpt)
}
})
return cmpts
}