城市距離(指標,雙結構體,雙佇列,雙向搜尋)

2021-08-24 20:52:18 字數 2060 閱讀 7411

04:城市距離

總時間限制: 1000ms 記憶體限制: 65535kb

描述 某個國家的地圖可以看做是乙個n*m的**,單元格為』#』表示城市區域,單元格為』.』表示耕地區域。連通的』#』表示的區域是同乙個城市。從乙個單元格走到上下左右相鄰的另乙個單元格為一步。現在,你可以選擇在任何乙個城市的任何乙個單元格中,請問你要走到其他的城市中去,最少要走多少步?

輸入

第一行兩個整數n和m。(1<=n,m<=500)

接下來有n行,每行乙個字串,有m個字元,每個字元要麼是』#』,要麼是』.』。

保證地圖中至少有兩個城市。

輸出

最近兩個城市的距離。

樣例輸入

4

4##..

...#

#...

....

樣例輸出

2
思路點拔:由於可以有不止乙個』#』,所以首先需要乙個搜尋,搜尋每

個城市,接著,用第二個搜尋去遍歷每個城市之間的距離,找到最小的距

離即可

法1:

#include

#include

#include

#include

#include

using

namespace

std;

struct node //定義第乙個結構體,儲存每個城市的資訊

;struct dis //定義第二個結構體,儲存城市間的距離

;queue

q1; //有兩個結構體,就有兩個佇列

queue

q2;int n,m;

int dir[4][2]=,,,},ans=int_max,tot=0,map[505][505];

bool flag1[505][505],flag2[505][505],maze[505][505];

void bfs2(int k); //第乙個廣搜,搜尋城市裡

void bfs1(int xx,int yy,int k) //第二個標準廣搜,搜尋城市間的距離}}

bfs2(k); //計算城市間的最短距離

}void bfs2(int k)

else}}

}}int main()

else

//否則就是耕地,就標記為0}}

for(int i=1;i<=n;i++)}}

printf("%d\n",ans); //輸出結果

return

0;}

法2(就是寫乙個判斷越界的函式而已,我就不打那麼多注釋了):

#include

#include

#include

#include

#include

using

namespace

std;

struct node

;struct dis

;queue

q1;queue

q2;int n,m;

int dir[4][2]=,,,},ans=int_max,tot=0,map[505][505];

bool flag1[505][505],flag2[505][505],maze[505][505];

bool inside(int xa,int ya) //判斷是否越界

void bfs2(int k) //算出最短距離

else}}

}}void bfs1(int xx,int yy,int k) //搜尋城市,並將在、城市賦為'1'(標準廣搜)}}

bfs2(k); //計算出城市間的最短距離

}int main()

else}}

for(int i=1;i<=n;i++)}}

printf("%d\n",ans);

return0;}

//本題是雙結構體,雙佇列,雙向搜尋,**量較大,再多梳理梳理

1466 雙向佇列

problem description 想想雙向鍊錶 雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首 兩頭都可以做出隊,入隊的操作。現在給你一系列的操作,請輸出最後佇列的狀態 命令格式 lin x x表示乙個整數,命令代表左邊進隊操作 rin x 表示右邊進隊操作 rout 右出佇列 lo...

雙端佇列篇deque SDUT OJ 雙向佇列

time limit 1000ms memory limit 65536k 想想雙向鍊錶 雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首 兩頭都可以做出隊,入隊的操作。現在給你一系列的操作,請輸出最後佇列的狀態 命令格式 lin x x表示乙個整數,命令代表左邊進隊操作 rin x 表示右...

51Nod 1275 雙指標 雙端佇列

題目鏈結 題意 給定乙個陣列a aa和乙個整數k kk,問有多少個連續區間的最大值和最小值的差不大於kkk 思路 首先對於固定起點的連續區間,隨著終點的增大,其區間最大值一定非遞減,區間最小值一定非遞增,故區間最大值和最小值的差一定是非遞減的。故可以利用雙指標來快速求出合法區間的個數。但該過程還需要...