計蒜客 蒜頭君回家 bfs

2021-09-25 03:22:09 字數 1405 閱讀 2013

題目鏈結

bfs廣搜,從s到p+從t到p的所有求最小值輸出就好,需要注意的地方

採用了stl的map,map預設按key值排序,故當使用自定義結構體時,應當在結構體內重構比較運算子,一開始只是簡單比較了point的x值,後來插入有誤,檢查後發現當x值相等時便覆蓋了相同x值的對映

採用的point結構體的cnt值變化後,作為對映的key值也會變化

ac**如下:

#include

using namespace std;

const

int maxn =

2005

;int to[4]

[2]=

,,,}

;int n, m;

char amap[maxn]

[maxn]

;bool vis[maxn]

[maxn]

, flag;

struct point

bool operator <

(point const

&a)const};

struct spoint

bool operator <

(spoint const

&a)const};

point st =

point(0

,0,0

);point en =

point(0

,0,0

);mapint>fir;

map<

int, spoint>sec;

void

bfs(point s)}}

}}intmain()

else

if(c ==

't')}}

memset

(vis, false,

sizeof

(vis));

flag = true;

bfs(st)

;memset

(vis, false,

sizeof

(vis));

flag = false;

bfs(en)

;for

(mapint>

::iterator it = fir.

begin()

; it != fir.

end();

++it)

sec.

insert

(pair<

int, spoint>

(it->second, it->first));

map<

int, spoint>

::iterator it = sec.

begin()

; cout

}

計蒜客 蒜頭君回家(bfs)

蒜頭君要回家,但是他家的鑰匙在他的朋友花椰妹手裡,他要先從花椰妹手裡取得鑰匙才能回到家。花椰妹告訴他 你家的鑰匙被我複製了很多個,分別放在不同的地方。蒜頭君希望能盡快回到家中,他需要首先取得任意一把鑰匙,請你幫他計算出回家所需要的最短路程。蒜頭君生活的城市可以看做是乙個 n m 的網格,其中有道路有...

計蒜客 蒜頭君回家

樣例輸入 8 10 p.p t s 樣例輸出 思路用兩次bfs,第一次計算出起點到p的距離,第二次計算出t到p的距離,然後迴圈取最小值。但是wa了很多次,找了很久,發現是vis判斷的問題,導致乙個資料更新多次。ac include include include include using name...

蒜頭君回家(bfs)

蒜頭君要回家,但是他家的鑰匙在他的朋友花椰妹手裡,他要先從花椰妹手裡取得鑰匙才能回到家。花椰妹告訴他 你家的鑰匙被我複製了很多個,分別放在不同的地方。蒜頭君希望能盡快回到家中,他首先需要取得任意一把鑰匙,請你幫他計算出回家所需要的最短路程。蒜頭君生活的城市可以看做是乙個 n m 的網格,其中有道路有...