| 123456789101112131415161718192021222324252627 |
- 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
- }
|