警示后人
  • 板块P1902 刺杀大使
  • 楼主NahX_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/2/27 22:50
  • 上次更新2024/2/28 14:50:31
查看原帖
警示后人
667795
NahX_楼主2024/2/27 22:50

这是20分的代码

bool bfs(int x){
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)vis[i][j]=0;
	queue<node>dl;
	dl.push(node{1,1});
	while(!dl.empty()){
		node t=dl.front();
		dl.pop();
		vis[t.x][t.y]=1;
		
		for(int i=0;i<4;i++){
			tx=t.x+dir[i][0],ty=t.y+dir[i][1];
			if(!vis[tx][ty]&&a[tx][ty]<=x&&tx>=1&&tx<=n&&ty>=1&&ty<=m){
				if(tx==n)return 1;
				dl.push(node{tx,ty});
			}
		}
	}
	return 0;
}

把打标记移到将点加入队列的地方就能A(

bool bfs(int x){
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)vis[i][j]=0;
	queue<node>dl;
	dl.push(node{1,1});
	vis[1][1]=1;//这
	while(!dl.empty()){
		node t=dl.front();
		dl.pop();
		for(int i=0;i<4;i++){
			tx=t.x+dir[i][0],ty=t.y+dir[i][1];
			if(!vis[tx][ty]&&a[tx][ty]<=x&&tx>=1&&tx<=n&&ty>=1&&ty<=m){
				if(tx==n)return 1;
				dl.push(node{tx,ty});
				vis[tx][ty]=1;//这
			}
		}
	}
	return 0;
}

2024/2/27 22:50
加载中...