x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。
某坦克需要從a區到b區去(a,b區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短?
已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。
例如:
坦克車只能水平或垂直方向上移動到相鄰的區。
輸入第一行是乙個整數n,表示方陣的大小, 4<=n<100
接下來是n行,每行有n個資料,可能是a,b,+,-中的某乙個,中間用空格分開。
輸入保證a,b都只出現一次。
要求輸出乙個整數,表示坦克從a區到b區的最少移動步數。
如果沒有方案,則輸出-1
【想說的】這種最小的路徑一般都是bfs,剛好回憶一下bfs寫法。
#include
#define ll long long
using
namespace std;
typedef pair<
int,
int> p;
const
int inf=
1000000
;char mp[
102]
[102];
int d[
102]
[102];
int sx,sy;
int ex,ey;
int dx[4]
=;int dy[4]
=;int n;
intbfs()
} d[sx]
[sy]=0
;while
(que.
size()
)for
(int i=
0;i<
4;i++)}
}return d[ex]
[ey];}
intmain()
if(mp[i]
[j]==
'b')}}
int ans=
bfs();
if(ans==inf)
ans=-1
; cout<
}
藍橋杯2015決賽 穿越雷區 bfs
題目描述 x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a ...
藍橋杯2015決賽 穿越雷區 (bfs)
一道題,居然卡在了輸入資料上,我去。搞了半天也不知道怎麼把資料完整的輸進去。這一次漲姿勢了。方向 int vis 105 105 標記是否走過 int n struct node queueq intbfs int x,int y for int i 0 i 4 i return 1 intmain...
藍橋杯2015決賽 穿越雷區(BFS求最短路)
題目描述 x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a ...