競技プログラミング用のライブラリ    次のライブラリへ    前のライブラリへ

003-01 .NET6のPriorityQueueクラスクラスの使用例


.NET6のPriorityQueueクラスの使用例です。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // コンストラクタの第1引数(構造体)、第2引数(優先度を示すlong型)
        var InsPQueue_Arr = new PriorityQueue<PQueue_Arr.PQueueJyoutaiDef, long>();

        PQueue_Arr.PQueueJyoutaiDef WillEnqueue;
        WillEnqueue.CurrX = 0;
        WillEnqueue.CurrY = 0;
        WillEnqueue.Val = 0;
        InsPQueue_Arr.Enqueue(WillEnqueue, WillEnqueue.Val);

        long Cnt = 0;
        while (InsPQueue_Arr.Count > 0) {
            PQueue_Arr.PQueueJyoutaiDef Dequeued = InsPQueue_Arr.Dequeue();
            Console.WriteLine("Dequeueしました");

            // エンキューの第1引数(構造体)、第2引数(優先度を示すlong型)
            InsPQueue_Arr.Enqueue(WillEnqueue, WillEnqueue.Val);
            Console.WriteLine("Enqueueしました");

            if (++Cnt == 5) break;
        }
    }
}

#region PQueue_Arr
// 内部で配列使用の優先度付きキュー (根のValが最小)
internal class PQueue_Arr
{
    internal struct PQueueJyoutaiDef
    {
        internal long CurrX;
        internal long CurrY;
        internal long Val;
    }
}
#endregion