public MstLineSweeper(List<Tuple<int, int, double, double, double>> proximityEdges, Size[] nodeSizes, Point[] nodePositions, bool forLayers) {
     _proximityEdges = proximityEdges;
     _nodeSizes = nodeSizes;
     _nodePositions = nodePositions;
     _forLayers = forLayers;
     Debug.Assert(nodePositions.Length==nodeSizes.Length);
     _q = new BinaryHeapPriorityQueue(nodeSizes.Length*2); 
 }
        public static void Test()
        {
            var q = new BinaryHeapPriorityQueue(10);

            q.Enqueue(2, 2);
            q.Enqueue(1, 1);
            q.Enqueue(9, 9);
            q.Enqueue(8, 8);
            q.Enqueue(5, 5);
            q.Enqueue(3, 3);
            q.Enqueue(4, 4);
            q.Enqueue(7, 7);
            q.Enqueue(6, 6);
            q.Enqueue(0, 0);
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(q.Dequeue());
            }
        }
 public static void Test() {
     var q = new BinaryHeapPriorityQueue(10);
     q.Enqueue(2, 2);
     q.Enqueue(1, 1);
     q.Enqueue(9, 9);
     q.Enqueue(8, 8);
     q.Enqueue(5, 5);
     q.Enqueue(3, 3);
     q.Enqueue(4, 4);
     q.Enqueue(7, 7);
     q.Enqueue(6, 6);
     q.Enqueue(0, 0);
     for (int i = 0; i < 10; i++)
         Console.WriteLine(q.Dequeue());
 }
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="graph"></param>
 /// <param name="weight"></param>
 /// <param name="root">the node we start building the tree</param>
 internal MinimumSpanningTreeByPrim(BasicGraph<IEdge> graph, Func<IEdge, double> weight, int root) {
     this.graph = graph;
     this.weight = weight;
     this.root = root;
     q=new BinaryHeapPriorityQueue(graph.NodeCount);
 }