hdu 2012 A計畫 雙層bfs

2021-07-23 22:47:39 字數 1820 閱讀 9827

d - a計畫

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出消

息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救

公主。不過公主早已習以為常,她深信智勇的騎士lj肯定能將她救出。 

現據密探所報,公主被關在乙個兩層的迷宮裡,迷宮的入口是s(0,0,0),公主的位置用p表示,時空傳輸機用#表示

,牆用*表示,平地用.表示。騎士們一進入時空傳輸機就會被轉到另一層的相對位置,但如果被轉到的位置是牆的話,

那騎士們就會被撞死。騎士們在一層中只能前後左右移動,每移動一格花1時刻。層間的移動只能通過時空傳輸機,

且不需要任何時間。

input

輸入的第一行c表示共有c個測試資料,每個測試資料的前一行有三個整數n,m,t。 n,m迷宮的大小n*m

(1 <= n,m <=10)。t如上所意。接下去的前n*m表示迷宮的第一層的布置情況,後n*m表示迷宮第二層的布置情況。

output

如果騎士們能夠在t時刻能找到公主就輸出「yes」,否則輸出「no」。

sample input

1

5 5 14

s*#*.

.#...

.....

****.

...#.

..*.p

#.*..

***..

...*.

*.#..

sample output

yes
思路:題意比較明確,要求我們從s開始能否找到p,每走一步費時1,但是這是乙個雙層的,
如果遇到傳輸機會直接到達另一層,且不費時,但是時光機的另一層是牆的話就不可以走,
所以對於這種情況,我們就把時光機也變成牆,如果兩邊都是時光機我們也需要全部都變成牆,
對於兩層之間的變換,我們需要乙個三維陣列,來儲存,並標記是否走過(當然也可以把走過的都變成牆就好了)
,怎麼樣從這一層到另一層的變換呢?我還是看了網上大神的做法,第一層為0,第二層為1的話,
每次異或就可以了,剩下的就需要四個方向的bfs直到找到公主就好了;
ac**:
#include #include #include #include using namespace std;

char map[3][12][12];

bool book[3][12][12];

int n,m,t,c;

struct node;

queueq;

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

bool check(int x , int y)

bool bfs()

for(i=0;i<4;i++)

}  }

return false;

}int main()

if(map[i][j][k]=='#'&&map[1^i][j][k]=='*')

map[i][j][k]='*';

}}}if(bfs())

printf("yes\n");

else

printf("no\n");

} return 0;

}

HDU 2102 A計畫 雙層BFS

problem description 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯...

HDU 2102 A計畫(雙層BFS)

題目 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯定能將她救出。現據密探所報,公主被...

H A計畫 雙層BFS

think 1反思 思考題意不全面,其一佇列中忘記當前結點出對,其二未涵蓋達不到p點未輸出no的情況,其三經過傳送門時間不變控制條件錯誤,其四未考慮到前後兩層都是傳送門的情況,其五未考慮到傳送到另一層時另一層對應結點已訪問過 2收穫 1 加深理解雙層bfs 2 鍛鍊思考問題的全面性 3感謝參考部落格...