社区讨论

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 条回复,欢迎继续交流。

正在加载回复...