題目傳送門
題目大意:給出一張網格圖,兩個格仔之間可能沒東西,可以直接通過,或者有門,需要鑰匙,又或者是牆,不可通過。一些格仔上有鑰匙,鑰匙和門一共有 p
pp 種,相同種類的才可以使用,問從 (1,
1)
(1,1)
(1,1
) 走到 (n,
m)
(n,m)
(n,m
) 最短需要多少時間。
眾所周知,網路流24題裡出一些廣搜是很正常的。
由於 p
pp 很小,所以狀壓bfs即可。狀壓的是當前撿到的鑰匙種類。
以及,雖然兩個格仔時間不會有多扇門,但是乙個格仔上可能有多個鑰匙。
**如下:
#include
#include
#include
#include
using
namespace std;
int n,m,p,k,s;
vector<
int> vec[11]
[11];
int a[11]
[11][
11][11
];struct nodeq[
1000010];
int st=
1,ed=
2,f[11]
[11][
1<<11]
;int f1[4]
=;int f2[4]
=;intget
(int x,
int y,
int xx,
int yy)
intmain()
scanf
("%d"
,&s)
;for
(int i=
1,x,y,z;i<=s;i++
)scanf
("%d %d %d"
,&x,
&y,&z)
,vec[x]
[y].
push_back
(z);
q[st]
=(node)
;for
(int i=
0;i[1].
size()
;i++
)q[st]
.key|=(
1<<
(vec[1]
[1][i]-1
));memset
(f,63
,sizeof
(f))
; f[1]
[1][q[st]
.key]=0
;while
(st!=ed);}
}}int ans=
999999999
;for
(int i=
0;i<(1
<;i++
)ans=
min(ans,f[n]
[m][i]);
printf
("%d"
,ans>
1000000?-
1:ans)
;}
網路流24題 6 孤島營救問題
為什麼又是奇奇怪怪的混進來的題啊qaq 又沒想出網路流解法啊qaq 看見p是10就又狀壓了吖qwq bfs跑一遍就吼了w 為啥子網路流24題總是狀壓 最短路 bfs啊qaq 哦對記得門和牆要建雙向邊 哭暈 include include include include includeusing na...
網路流 24 題 孤島營救問題 最短路
題意 給你乙個n m的圖,你要從 1,1 出發到達 n,m 路上會有最多p種牆和鑰匙。接下來會給你k個門,在x1,y1,x2,y2之間會有一扇ki型別的門,如果ki為0,那麼無法穿過,否則你要拿到對應ki的鑰匙才可以穿過,同理接下來會有s把鑰匙,這些鑰匙在xi,yi處,型別為ki。每走一步需要1的時...
網路流24題 孤島營救問題(狀態壓縮 搜尋)
鏈結 題意 走迷宮問題,從 1,1 到 n,n 的最短時間,其中有牆,鑰匙和門的設定。做法 廣度優先搜尋 鑰匙串狀態壓縮 q 可這和網路流有什麼關係 a 標籤 網路流24題,沒了 ugly code include define n 200 using namespace std int n,m,p...