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

004-02 BFSのテンプレート


BFSのテンプレートです。


C#のソース

    struct JyoutaiDef
    {
        internal int Curr_X;
        internal int Curr_Y;
        internal int Level;
        internal int SumCost;
    }

    static void ExecBFS()
    {
        var Que = new Queue<JyoutaiDef>();
        JyoutaiDef WillEnqueue;
        WillEnqueue.Curr_X = 1234;
        WillEnqueue.Curr_Y = 1234;
        WillEnqueue.Level = 1234;
        WillEnqueue.SumCost = 1234;
        Que.Enqueue(WillEnqueue);

        var VisitedSet = new HashSet<int>();

        while (Que.Count > 0) {
            JyoutaiDef Dequeued = Que.Dequeue();

            // クリア判定

            Action<int> EnqueueAct = (仮引数名) =>
            {
                int Hash = GetHash(WillEnqueue);
                if (VisitedSet.Add(Hash)) {
                    // Que.Enqueue(WillEnqueue);
                }
            };

            // Que.Enqueue(WillEnqueue);
        }
    }

    static int GetHash(JyoutaiDef pJyoutai)
    {
        return pJyoutai.Curr_X * 1234 + pJyoutai.Curr_Y;
    }