Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express')
- const app = express()
- // Main function
- function topoSort(){
- const dependencies = [
- [],
- [],
- [1],
- [0],
- [],
- [3],
- [2, 4, 5],
- [5, 6]
- ]
- let inDegrees = mapInDegrees(dependencies)
- let queue = generateQueue(inDegrees)
- let list = []
- for(let i = 0; i < inDegrees.length; i++){
- for(let row of dependencies){
- for(let item of row){
- if(item === queue[0]){
- inDegrees[dependencies.indexOf(row)]-=1
- if(inDegrees[dependencies.indexOf(row)] == 0){
- queue.push(dependencies.indexOf(row))
- }
- list.push(queue[0])
- queue.shift()
- }
- }
- }
- }
- //list.push(dependencies.length-1)
- return list
- }
- // Generates in-degrees
- function mapInDegrees(dependencies){
- let inDegrees = []
- for(let i = 0; i < dependencies.length; i++){
- inDegrees.push(dependencies[i].length)
- }
- return inDegrees
- }
- // Generates queue
- function generateQueue(inDegrees){
- let queue = []
- for(let i = 0; i < inDegrees.length; i++){
- if(inDegrees[i] === 0)
- queue.push(i)
- }
- return queue
- }
- console.log(topoSort())
- app.listen(3000, () => {
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement