社区讨论
BFS,70pts,3个TLE
P1332血色先锋队参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjzjien0
- 此快照首次捕获于
- 2026/01/04 17:39 2 个月前
- 此快照最后确认于
- 2026/01/07 23:50 上个月
咋剪枝啊?本蒻蒟不知道该怎么剪枝也不会优化TAT。
CPP#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10,M=0x3f3f3f;
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,1,-1};
queue<pair<int,int> >p;
int n,m,a,b,mp[N][N],x,y;
bool visit[N][N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
memset(mp,M,sizeof(mp));
memset(visit,false,sizeof(visit));
cin>>n>>m>>a>>b;
while(a--){
cin>>x>>y;
visit[x][y]=1;
mp[x][y]=0;
p.push(make_pair(x,y));
while(!p.empty()){
int xx=p.front().first;
int yy=p.front().second;
p.pop();
for(int i=0;i<4;i++){
int a=xx+dx[i];
int b=yy+dy[i];
if(a<1 or a>n or b<1 or b>m or visit[a][b]){
continue;
}
visit[a][b]=1;
p.push(make_pair(a,b));
mp[a][b]=min(mp[a][b],mp[xx][yy]+1);
}
}
memset(visit,false,sizeof(visit));
}
while(b--){
cin>>x>>y;
cout<<mp[x][y]<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...