edges-to-adjacency-list
Version:
Convert a list of edges to an adjacency list
33 lines (30 loc) • 720 B
JavaScript
module.exports = edgeToAdjacency
var uniq = require("uniq")
function edgeToAdjacency(edges, numVertices) {
var numEdges = edges.length
if(typeof numVertices !== "number") {
numVertices = 0
for(var i=0; i<numEdges; ++i) {
var e = edges[i]
numVertices = Math.max(numVertices, e[0], e[1])
}
numVertices = (numVertices|0) + 1
}
numVertices = numVertices|0
var adj = new Array(numVertices)
for(var i=0; i<numVertices; ++i) {
adj[i] = []
}
for(var i=0; i<numEdges; ++i) {
var e = edges[i]
adj[e[0]].push(e[1])
adj[e[1]].push(e[0])
}
for(var j=0; j<numVertices; ++j) {
uniq(adj[j], function(a, b) {
return a - b
})
}
return adj
}