time limit: 1000 ms case time limit: 1000 ms memory limit: 32 mbbfs尋路total submission: 12 submission accepted: 8
description
平時不努力,考試得著急吶。傳說中的bt監考老師竟然搬來了訊號遮蔽工具,手機不管用啦有木有。不過這難不到大家,cxlove見證了同學們使用傳統的作弊方式----傳紙條,紙條得從a同學傳到b同學處,在乙個n*m的教室裡,零散著坐著一些同學,監考老師遊蕩在教室某些位置,能否成功將紙條傳到b同學處,且不被老師發現。每一次傳紙條不能斜傳,只能傳給前後左右四個同學,監考老師的監視範圍為相鄰的八個位置,當紙條傳到老師監視範圍內就會被逮住了,紙條傳到空位置處時傳送失敗。 幫cxlove計算下最少需要多少時間才能完成傳紙條。
input
多組測試資料
第一行兩個整數,n,m(1<=n,m<=100),分別表示教室有n*m個位置接下來n行,每行m個字元,表示教室的情況
'a'表示紙條的初始位置,'b'表示紙條的目標位置,'.'表示一般同學的位置,'#'表示當前位置沒有人坐,'t'表示監考老師。(可能有多個監考老師)
output
輸出僅乙個整數,表示需要的最少時間傳到b同學處
如果不能傳達,輸出-1
sample input
original
transformed
5 5a.t..
.#..#
.....
####.
....b
1 5a.t.b
sample output
original
transformed
8-1
注意各種邊界條件
1/*2by:ohyee
3github:ohyee
4email:[email protected]*/
6 #include 7 #include 8 #include 9 #include 10 #include
11 #include 12 #include 13 #include 14 #include 15 #include 16
using
namespace
std;
1718
#define rep(n) for(int o=0;o19
20const
int maxn = 105;21
22char
map[maxn][maxn];
23const
int delta = ;
2425
bool
do()
43if(temp == 'b'
) 47
if(temp == 't'
) 55
for(int k = 2;k < 4;k++) 62}
63}64if(temp == '#'
)65 map[i][j] = '#'
;66}67
/*68
for(int i = 0;i < n;i++)
73*/
7475 queue int,int> >q;
76int len[maxn][maxn] = ;
77for(int i = 0;i < n;i++)
78for(int j = 0;j < m;j++)
79 len[i][j] = -1
;80 len[x1][y1] = 0
;81 q.push(pair(x1,y1));
82while(!q.empty()) 95}
96}97 printf("
%d\n
",len[x2][y2]);
9899
return
true
;100
}101
102int
main()
BFS AOJ 579 期末考試之考試傳紙條
description 平時不努力,考試得著急吶。傳說中的bt監考老師竟然搬來了訊號遮蔽工具,手機不管用啦有木有。不過這難不到大家,cxlove見證了同學們使用傳統的作弊方式 傳紙條,紙條得從a同學傳到b同學處,在乙個n m的教室裡,零散著坐著一些同學,監考老師遊蕩在教室某些位置,能否成功將紙條傳到...
757 期末考試
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 馬上就要考試了,小t有許多作業要做,而且每個老師都給出來了作業要交的期限,如果在規定的期限內沒 交作業就會扣期末成績的分數,假設完成每門功課需要一天的時間,你能幫助小t扣除的分數最小嗎?輸入輸入n,表示n門功課 n 2000 接...
codevs 2915 期末考試
時間限制 1 s 空間限制 16000 kb 題目等級 gold 題目描述 description 期末考試要來了,某同學正在努力複習。他要複習n個知識點,每個知識點需要一定的知識做基礎。現給你乙個aov網,其中有m條邊。問他能考得怎樣?假設他只要複習了就不會出錯,沒複習就什麼也不會 輸入描述 in...