網路流24題 孤島營救問題 題解

2021-10-05 11:49:59 字數 1579 閱讀 6704

題目傳送門

題目大意:給出一張網格圖,兩個格仔之間可能沒東西,可以直接通過,或者有門,需要鑰匙,又或者是牆,不可通過。一些格仔上有鑰匙,鑰匙和門一共有 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...