uva 10047優先佇列 BFS

2021-10-08 07:29:09 字數 1215 閱讀 5098

題目大意:

有乙個獨輪車,輪子上有5個不同的扇形顏色區域, 每個區域大小都是相等的(72°扇形)。 騎著這個車子在乙個廣場上行走。

廣場是有大小相同的正方形瓷磚鋪成的。 獨輪車從一塊瓷磚走向相鄰的一塊,輪子正好轉72°。只能走向相鄰的上、下、左、右的瓷磚。從乙個瓷磚走向下乙個瓷磚耗費1秒鐘。車子轉方向90°耗費1秒鐘,連轉180°就要費2秒鐘。白色的瓷磚可以走,黑色的不可以走(黑色的用"#「代替,白色的用」."代替)。

題目要求從標有s的地方走向標有t的地方。輪子在開始時,藍色是貼著地面的,要求到達終點時,也正好是藍色貼著地面的。

如果可以到達的話,輸出所需要的最短時間。否則輸出 destination not reachable。

思路:需要用到優先佇列,只是bfs不能得到答案。

**

#include

using

namespace std;

int dir[4]

[2]=

,,,}

;int m,n,start_x,start_y,end_x,end_y,step;30]

[30];

bool vis[30]

[30][

4][5

];struct node};

node beginn,q,t;

priority_queue que;

void

bfs(

)elseif(

!vis[t.x]

[t.y]

[i][t.color]

) que.

push

(t);

vis[t.x]

[t.y]

[i][t.color]

=true;}

}}}printf

("destination not reachable\n");

}int

main()

if[k]

=='t')}

}}beginn.x=start_x,beginn.y=start_y,beginn.color=

0,beginn.time=0;

beginn.dir=0;

if(cas!=

1) cout

("case #%d\n"

, cas++);

bfs();

}}

UVa 10603 BFS 優先佇列

題目鏈結 解題報告 lrj紫書中路徑尋找問題的例題。大部分細節書中都有說明,不再贅述。說一點自己的感想。書裡面說演算法的正確性不是顯然的,可是我覺得應該是顯然的吧?每次找到佇列裡dist值最小的狀態,以它來更新ans值,並且拓展其他狀態。假如當前我們找到了乙個恰好有某個瓶子裡的水為d公升的狀態p,現...

uva 10603 BFS 優先佇列

先吐槽下這兩天無限卡題,已經積了3道了。一籌莫展,只能先開一道稍微簡單點的。題意 這題就是加強版的倒水問題,把三個杯子分別含水量作為狀態,已經倒水的值作為距離。構建隱式圖,然後利用優先佇列寬搜其中記得時刻更新到達終點的最小距離。因為有可能無法到達目標狀態需要輸出離目標最近的。其實狀態還可進一步簡化,...

紫書uva 10603 優先佇列 bfs

這個題目其實是暴力的乙個典範,首先題目說了是最小倒水數,也就是總共次數中轉移水的數量,bfs是找最小次數的,因此要用優先佇列來改變優先順序,將最小倒水數優先,然後是處理如果找不到合適的d,我們要把所有能夠找到的值都存放在乙個陣列裡面,然後遍歷一次就可以了,我用的vis陣列是三維的,用來表示第1,2,...