分析:
求的是最短时间,我们用bfs。
分析题目:本来是个简单的搜索题,但是有个传送门,我们要处理一下,传送门的性质是把点送到相应的点去,所以如果下一个点是传送门,我们可以直接把传送门对面的点放入队列中。
#include<stdio.h>
struct point
{
//坐标
int x;
int y;
//步数
int step;
};
struct point queue[100000000];//队列
int end;//队尾
int M,N; //地图大小
char map[500][500];//地图
int book[500][500];//标记
struct point getstart()//找到起始点
{
struct point now;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='@')
{
now.x=i;
now.y=j;
now.step=0;
return now;
}
}
}
}
struct point getplace(struct point ch) {//找另一个传送门
struct point place;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (map[i][j] == map[ch.x][ch.y] && !(ch.x == i && ch.y == j)) {
place.x = i;
place.y = j;
return place;