離開中山路(bfs)

2021-10-21 20:07:38 字數 919 閱讀 8038

題目背景

《愛與愁的故事第三彈·shopping》最終章。

題目描述

愛與愁大神買完東西後,打算坐車離開中山路。現在愛與愁大神在x1,y1處,車站在x2,y2處。現在給出乙個n×n(n<=1000)的地圖,0表示馬路,1表示店鋪(不能從店鋪穿過),愛與愁大神只能垂直或水平著在馬路上行進。愛與愁大神為了節省時間,他要求最短到達目的地距離(a[i][j]距離為1)。你能幫他解決嗎?

輸入格式

第1行:乙個數 n

第2行~第n+1行:整個地圖描述(0表示馬路,1表示店鋪,注意兩個數之間沒有空格)

第n+2行:四個數 x1,y1,x2,y2

輸出格式

只有1行:最短到達目的地距離

思路:這是一道簡簡單單的bfs題,題目要求求最短路徑,我們可以用bfs來搜尋,第乙個搜尋到的肯定就是最優解,我們直接輸出即可,總之這套題就是訪問過的打標記即可,然後判斷四個方向有沒有符合條件的值我們直接走過去即可,記得初始位置賦值為1;

#include

using

namespace std;

int n,xx1,yy1,x2,y2;

char a[

1010][

1010];

bool vis[

1010][

1010];

int dx[5]

=;//四個方向

int dy[5]

=;struct node};

queue q;

intbfs

(int x,

int y)}}

intmain()

} cin>>xx1>>yy1>>x2>>y2;

cout<<

bfs(xx1,yy1)

;return0;

}

P1746 離開中山路 AC於2018 9 16

愛與愁的故事第三彈 shopping 最終章。愛與愁大神買完東西後,打算坐車離開中山路。現在愛與愁大神在x1,y1處,車站在x2,y2處。現在給出乙個n n n 1000 的地圖,0表示馬路,1表示店鋪 不能從店鋪穿過 愛與愁大神只能垂直或水平著在馬路上行進。愛與愁大神為了節省時間,他要求最短到達目...