P1902 刺杀大使 | 求助,蒟蒻连绿题都不会写了QWQ
  • 板块学术版
  • 楼主PCCP
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/4/8 15:48
  • 上次更新2023/10/23 19:03:35
查看原帖
P1902 刺杀大使 | 求助,蒟蒻连绿题都不会写了QWQ
310773
PCCP楼主2023/4/8 15:48

求助,自己的代码0分,感觉改的和题解都相差无几了,真的**的调的心态爆炸了,求求谷内各位大佬帮帮蒟蒻看看是什么问题?

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
typedef pair<int,int> PII;
const int N=1100;
int n,m,maxl,ans,a[N][N];
int dx[5]={0,0,1,-1};
int dy[5]={1,-1,0,0};
queue<PII> q;
bool st[N][N];
bool bfs(int mid){
	q.push(PII(1,1));
	memset(st,false,sizeof st);
	st[1][1]=true;
	while(q.size()){
		PII t=q.front();
		q.pop();
		for(int i=0;i<=4;i++){
			int sx=t.first+dx[i],sy=t.second+dy[i];
			if(sx<=0||sx>n||sy<=0||sy>m||st[sx][sy]==true||a[sx][sy]>mid){
				continue;
			}
			if(sx==n){
				return true;
			}
			st[sx][sy]=true;
			q.push(PII(sx,sy));
		}
	}
	return false;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&a[i][j]);
			maxl=max(maxl,a[i][j]);
		}
	}
	int l=0,r=maxl;
	while(l<r){
		int mid=(l+r)>>1;
		if(bfs(mid)==true){
			r=mid-1;
			ans=mid;
		}
		else{
			l=mid+1;
		}
	}
	printf("%d",l);
}
2023/4/8 15:48
加载中...