struct JyoutaiDef
{
internal long CurrX;
internal long CurrY;
internal long Level;
internal long SumCost;
}
static void ExecBFS()
{
var Que = new Queue<JyoutaiDef>();
JyoutaiDef WillEnqueue;
WillEnqueue.CurrX = 1234;
WillEnqueue.CurrY = 1234;
WillEnqueue.Level = 1234;
WillEnqueue.SumCost = 1234;
Que.Enqueue(WillEnqueue);
var VisitedSet = new HashSet<long>();
while (Que.Count > 0) {
JyoutaiDef Dequeued = Que.Dequeue();
// クリア判定
Action<long , long> EnqueueAct = (pNewX , pNewY) =>
{
if( pNewX < 0 || pNewX < UB_X) return;
if( pNewY < 0 || pNewY < UB_Y) return;
// if ( BanArr[pNewX,pNewY] == '★') return;
// if ( BanArr[pNewX,pNewY] != '★') return;
long Hash = GetHash(WillEnqueue);
if (VisitedSet.Add(Hash)) {
// Que.Enqueue(WillEnqueue);
}
};
// EnqueueAct(Dequeued.pNewX , Dequeued.pNewY - 1);
// EnqueueAct(Dequeued.pNewX , Dequeued.pNewY + 1);
// EnqueueAct(Dequeued.pNewX - 1 , Dequeued.pNewY);
// EnqueueAct(Dequeued.pNewX + 1 , Dequeued.pNewY);
}
}
static long GetHash(JyoutaiDef pJyoutai)
{
return pJyoutai.CurrX * 1234567890 + pJyoutai.CurrY;
}