package hierarchy

// nodeMinHeap is a small, allocation-free priority queue for stable Kahn
// traversal. Node indexes already follow entity-ID order.
type nodeMinHeap []int

func ( *nodeMinHeap) ( int) {
	* = append(*, )
	for  := len(*) - 1;  > 0; {
		 := ( - 1) / 2
		if (*)[] <= (*)[] {
			break
		}
		(*)[], (*)[] = (*)[], (*)[]
		 = 
	}
}

func ( *nodeMinHeap) () int {
	 := *
	 := [0]
	 := [len()-1]
	 = [:len()-1]
	if len() > 0 {
		[0] = 
		for  := 0; ; {
			 := *2 + 1
			if  >= len() {
				break
			}
			 := 
			 :=  + 1
			if  < len() && [] < [] {
				 = 
			}
			if [] <= [] {
				break
			}
			[], [] = [], []
			 = 
		}
	}
	* = 
	return 
}