不能用bfs???大佬求助!!!
  • 板块P1605 迷宫
  • 楼主hanyiyang
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/5/23 19:01
  • 上次更新2023/11/7 01:56:44
查看原帖
不能用bfs???大佬求助!!!
220706
hanyiyang楼主2020/5/23 19:01
//hanyiyang c++ code

#include <bits/stdc++.h>
#define MAXN 10

using namespace std;

int step_x[5]={0,1,-1,0,0};
int step_y[5]={0,0,0,1,-1};

struct node
{
	int x,y;
	int cnt;
}obs[MAXN][MAXN];

int main()
{
	int x,y;
	int n,m,t;
	int sum=0;
	int sx,sy,fx,fy;
	queue<node>loseway;
	bool visited[MAXN][MAXN];
	
	scanf("%d%d%d",&n,&m,&t);
	scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			visited[i][j]=false;
	for(int i=1;i<=t;i++)
	{
		scanf("%d%d",&x,&y);
		visited[x][y]=true;
	}
	node start;
	start.x=sx;start.y=sy;start.cnt=0;
	visited[start.x][start.y]=true;
	
	loseway.push(start);
	
	while(!loseway.empty())
	{
		node p=loseway.front();
		visited[p.x][p.y]=true;
		if(p.x==fx&&p.y==fy)
		{
			sum++;
		}
		for(int i=1;i<=4;i++)
		{
			int nx=p.x+step_x[i];
			int ny=p.y+step_y[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!visited[nx][ny])
			{
				node a;
				a.x=nx;a.y=ny;a.cnt=p.cnt+1;
				loseway.push(a);
				visited[nx][ny]=true;
			}
		}
		loseway.pop();
	}
	
	printf("%d",sum);

	return 0;
}
2020/5/23 19:01
加载中...