BFS HRBUST 2188 星際旅行

2021-08-14 17:46:01 字數 1792 閱讀 5995

星際旅行

time limit: 1000 ms

memory limit: 32768 k

total submit: 150(66 users)

total accepted: 80(60 users)

rating:

special judge: no

description

小z在星際旅行中,他想從當前起始點到達目的地,他可以上下左右的移動,並且每移動一格需要花費一單位時間,

星際中有許多危險的地方不可以走,還有許多的黑洞,你可以不花費任何時間從乙個黑洞瞬間到達其它任何乙個黑洞,

請你幫助小z計算從當前起始點到目的地最少需要多少單位時間。

input

第一行是乙個整數t,代表t組測試資料。

對於每組測試資料,首先是兩個整數n,m代表星際地圖(1<=n<=100, 1<=m<=100)

接下來是乙個n*m的地圖。

'o' 代表黑洞。

'#' 代表不可以走的地方。

'.' 代表普通的空間。

's' 代表起始點,有且只有乙個。

'e' 代表目的地,有且只有乙個。

output

對於每組測試資料,如果小z可以到達目的地,則輸出需要的最少時間,否則輸出"impossible"。

sample input

3 4so..

..oe

3 3#s#

e##sample output

impossible

source

2014.11.30新生賽-正式賽

bfs的題目,思路不唯一,這裡提供一種思路:

分別找到起點和終點,然後分別對起點和終點bfs,利用bfs到最近目標的結果一定最短的特點,結束標誌為終點或者起點或者黑洞,記錄到達目標之後的前進距離以及結束的位置,結果有三種情況:

1、兩者距離有一者為無窮大【這裡設定的為0x3f3f3f3f】 無解,從起點沒有辦法到達終點。

2、兩者結束的位置均為黑洞,結果是兩者到最近黑洞距離之和。

3、兩者結束的位置不均為黑洞,那麼兩者距離絕對相等都是從起點到終點的距離,那麼結果只能是從起點到終點的距離。

縱使只有乙個黑洞,也不難證明起點和終點到達黑洞的距離也是等於起點到達終點的距離,也屬於情況2。

附上ac**

#include#include#include#includeusing namespace std;

char map[106][106];

int vis[106][106];

int n,m;

int go = 0x3f3f3f3f;

int out = 0x3f3f3f3f;

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

typedef struct

poi;

char end1,end2;//記錄起點和終點的資訊

void bfs(int x,int y,int *aim,char *flag)

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

mark:

;}int main(void)

for(int i = 0 ; i < n ; i++)

else if(map[i][j]=='e')}}

if(go==0x3f3f3f3f||out==0x3f3f3f3f)//無法走到終點。

else if(end1==end2)//終點都是黑洞。

else//終點是對方。

}return 0;

}

2 18學習記錄

主要內容 css知識複習 字元轉換 text transform none uppercase lowercase capitalize text decoration none underline overline through line blink 斜體 font style italic f...

2 18 陣列分割

題目概述 有乙個沒有排序,元素個數為2n的正整數陣列。要求把它分割為元素個數為n的兩個陣列,並使兩個子陣列的和最接近。假設陣列a 1.2n 所有元素的和是sum。模仿動態規劃解0 1揹包問題的策略,令s k,i 表示前k個元素中任意i個元素的和的集合。顯然 s k,1 s k,k s k,i s k...

2 18 共享記憶體通訊

1.基本概念 共享記憶體是ipc機制中的一種,作用是使得兩個不相關的程序訪問同一段記憶體,是一種程序間傳輸資料的一種有效方式。2.函式學習 2.1 建立 獲取共享記憶體 函式名 shmget 函式原型 man shmget int shmget key t key,size t size,int s...