矛盾激化

Description

圆星与盒星的贸易日渐繁荣,渐渐地盒星的人们发现生意越做越穷,于是他们找上了圆星的矛盾。但由于盒星人的智力普遍较低,盒星人计划向聪明的圆星人一起玩游戏,他们认为如果圆星人思考并取胜了那么就是一心一意做生意,反之则证明在坑他们。

高智商的圆星人并不想花时间和盒星人玩这种游戏,于是他交给了你。

游戏内容是迷宫,需要计算从迷宫中最“糟糕”的那一个点走出迷宫所需的步数(即使从这一点以最优的方式走向最靠近的出口,它仍然需要最多的步数)。

当然了,圆星人只能水平或垂直地在 X 或 Y 轴上移动,他们从来不走对角线。每移动到一个新的方格算作一步(包括移出迷宫的那一步)。

即求出从所有的点到任意一个出口的距离中所有最短路径的最大值

注意,本题是提交答案题,将最后一个样例的对应答案直接输出即可

Input

第一行输入两个整数a,ba,b表示长宽

接下来\(2\times b+1\)行,每行\(2\times a+1\)个字符

描述一个迷宫

Output

输出一个整数,表示走出迷宫的所有最短路径中的最大值

Sample Input 1

6 3
+ +-+-+-+-+-+
|           |
+-+ +-+ +-+-+
|           |
+-+-+-+-+-+ +
|           |
+ +-+-+-+-+-+

Sample Output 1

7

Sample Input 5

38 100
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         | |             |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
|               |                         |                                 |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |               |   |         |   |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|             |             |       |           |   |   | |   | |   |   | | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|         |               |         | |         |       | | |   |   | |   | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
|                                     |             |       |               |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |           |       |     |       |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|         |               |         | |         |       | | |   |   | |   | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|             |             |       |           |   |   | |   | |   |   | | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                         | |             |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
|               |                         |                                 |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |               |   |         |   |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|             |             |       |           |   |   | |   | |   |   | | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|         |               |         | |         |       | | |   |   | |   | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
|                                     |             |       |               |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |           |       |     |       |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|         |               |         | |         |       | | |   |   | |   | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|             |             |       |           |   |   | |   | |   |   | | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                         | |             |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+ +             +
|               |                     |   |                                 |
+-+-+-+-+       +-+-+             +-+-+   +-+-+-+-+-+-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |               |   |         |   |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|             |             |       |           |   |   | |   | |   |   | | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|         |               |           |                 | | |   |   | |   | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
|                                     |             |       |               |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |           |       |     |       |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|         |               |         | |         |       | | |   |   | |   | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|             |             |       |           |   |   | |   | |   |   | | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         | |             |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
|               |                         |                                 |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |               |   |         |   |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                                                                           |
+         +                         + +         +   +   + + + + +   + + + + +
|         |   |           | |       | |         |       | | |   |   | |   | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
|                                     |             |       |               |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |           |       |     |       |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|         |               |         | |         |       | | |   |   | |   | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|             |             |       |           |   |   | |   | |   |   | | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+        -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+  -+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         | |             |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
|               |                         |                                 |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |               |   |         |   |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|             |             |       |           |   |   | |   | |   |   | | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|         |               |         | |         |       | | |   |   | |   | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-   -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |                                                                         |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                         |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
|                                     |             |       |               |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                 |                 |     |           |       |     |       |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|         |               |         | |         |       | | |   |   | |   | |
+         +   +           + +       + +         +   +   + + + + +   + + + + +
|             |             |       |           |   |   | |   | |   |   | | |
+-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
|                 |                 |     |           |       |     |       |
+-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
|                                     |             |       |               |
+ +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
| |                                                         |               |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
| |                                                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Sample Output 5

267

题解

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
#define inf 0x3f3f3f3f
char map[500][500];//存储地图 
int m,n;
//存储起始点x、y坐标 
int sx[3];
int sy[3]; 
int cnt;
int answer;
bool book[500][500];//标记数组 
int dis[500][500];//维护最短距离的最小值 
struct node{
	int x;
	int y;
	int sum;
};
node temp,now;
queue<node> que;
int dir1[4][2]={1,0,0,1,-1,0,0,-1};
int dir2[4][2]={2,0,0,2,-2,0,0,-2};
void bfs(int num){
	//每次广搜前初始化 
	memset(book,0,sizeof(book));
	while(!que.empty()){
		que.pop();
	}
	temp.x=sx[num];
	temp.y=sy[num];
	temp.sum=0;
	que.push(temp);//将起点加入队列 
	book[sx[num]][sy[num]]=1;//标记起点 
	while(!que.empty()){
		now=que.front();//取出节点 
		que.pop();
		int x=now.x;
		int y=now.y;
		int s=now.sum;
		dis[x][y]=min(dis[x][y],s);//取最小值 
		//向四个方向遍历 
		for(int i=0;i<4;i++){
			//走两格 
			int xx=dir2[i][0]+x;
			int yy=dir2[i][1]+y;
			//走一格 
			int zx=dir1[i][0]+x;
			int zy=dir1[i][1]+y;
			//如果是需要走两格 
			if(!book[xx][yy]&&map[xx][yy]==' '&&xx>=1&&xx<=2*n+1&&yy>=1&&yy<=2*m+1&&map[zx][zy]==' '&&(x!=sx[num]||y!=sy[num])){
				book[xx][yy]=1;
				temp.x=xx;
				temp.y=yy;
				temp.sum=s+1;
				que.push(temp);
			}
			//如果从起点开始走的话,需要走一格 
			else if(!book[zx][zy]&&map[zx][zy]==' '&&zx>=1&&zx<=2*n+1&&yy>=1&&yy<=2*m+1&&x==sx[num]&&y==sy[num]){
				book[zx][zy]=1;
				temp.x=zx;
				temp.y=zy;
				temp.sum=s+1;
				que.push(temp);
			}
		}
	}
}
int main(){
	scanf("%d%d",&m,&n);
	getchar();
	//初始化距离为无穷大 
	for(int i=1;i<=2*n+1;i++){
		for(int j=1;j<=2*m+1;j++){
			dis[i][j]=inf;
		}
	}
	for(int i=1;i<=2*n+1;i++){
		for(int j=1;j<=2*m+1;j++){
			scanf("%c",&map[i][j]);
			//从地图的四个边搜索起点 
			if(i==1||j==1||i==2*n+1||j==2*m+1){
				if(map[i][j]==' '){
					sx[++cnt]=i;
					sy[cnt]=j;
				}
			}
		}
		getchar();
	}
	//从两个起点分别遍历一次 
	bfs(1);
	bfs(2);
	//从所有的距离中找到最大值 
	for(int i=1;i<=2*n+1;i++){
		for(int j=1;j<=2*m+1;j++){
			if(dis[i][j]!=inf){
				answer=max(dis[i][j],answer);
			}
		}
	}
	printf("%d",answer);
	return 0;
}

这道题核心就是宽搜,有点不同的就是这道题的输入格式很特殊,不是一个字符代表一个格子,而是四个+号围成一个格子,正常在迷宫中走需要走两格,从起点向迷宫中走得走一格,所以我们要分出走一格和走两格的情况

注意我们应该在将格子入队时就标记这个格子,而不是到这个格子时才标记。

posted @ 2020-07-31 11:25  ice--cream  阅读(522)  评论(0编辑  收藏  举报