BFS AOJ 579 期末考試之考試傳紙條

2022-08-19 18:30:10 字數 1370 閱讀 5542

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

5 5

a.t..

.#..#

.....

####.

....b

1 5a.t.b

sample output

8

-1

思路:

廣度優先搜尋   把t的八個方向的位置全部換成# 如果替換後不存在ab後 肯定-1  否則就bfs   這裡要注意判斷八個方向中有沒有t  否則會把t給覆蓋掉造成錯誤(卡在這地方卡半天...一直wa)

#include #include int n,m; 

typedef struct node

node;

char map[111][111];

int ans[111][111];

int move[4][2]=,,,};

int bfs(node a,node b);

int main()

else if(map[i][j]=='b')

} }

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

} }

if(map[a.x][a.y]=='#'||map[b.x][b.y]=='#')

k=bfs(a,b);

if(k)

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

else

printf("-1\n");

} return 0;

}

int bfs(node a,node b)

} front++;

} return 0;

}

AOJ 579 期末考試之傳紙條

time limit 1000 ms case time limit 1000 ms memory limit 32 mb total submission 12 submission accepted 8 description 平時不努力,考試得著急吶。傳說中的bt監考老師竟然搬來了訊號遮蔽工具...

757 期末考試

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 馬上就要考試了,小t有許多作業要做,而且每個老師都給出來了作業要交的期限,如果在規定的期限內沒 交作業就會扣期末成績的分數,假設完成每門功課需要一天的時間,你能幫助小t扣除的分數最小嗎?輸入輸入n,表示n門功課 n 2000 接...

codevs 2915 期末考試

時間限制 1 s 空間限制 16000 kb 題目等級 gold 題目描述 description 期末考試要來了,某同學正在努力複習。他要複習n個知識點,每個知識點需要一定的知識做基礎。現給你乙個aov網,其中有m條邊。問他能考得怎樣?假設他只要複習了就不會出錯,沒複習就什麼也不會 輸入描述 in...