社区讨论
70pts TLE 求助!
P114101迷宫参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjh5c0e
- 此快照首次捕获于
- 2025/11/04 02:29 4 个月前
- 此快照最后确认于
- 2025/11/04 02:29 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+5;
const int M = 1e5+5;
const int dx[] = {0,-1,0,1};
const int dy[] = {1,0,-1,0};
char a[N][N];
int n,m;
bool vis[N][N];
bool check(int x,int y){
return x>=1 && x<=n && y>=1 && y<=n;
}
int bfs(int sx,int sy){
memset(vis,0,sizeof(vis));
int x = sx;
int y = sy;
queue<pair<int,int>> que;
que.push({x,y});
vis[x][y] = 1;
while(!que.empty()){
int nx = que.front().first;
int ny = que.front().second;
que.pop();
for(int i = 0;i<4;i++){
int nnx = nx+dx[i];
int nny = ny+dy[i];
if(a[nnx][nny] != a[nx][ny] && !vis[nnx][nny] && check(nnx,nny)){
que.push({nnx,nny});
vis[nnx][nny] = 1;
}
}
}
int ans = 0;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n;j++){
if(vis[i][j])
ans++;
}
}
return ans;
}
int main(){
cin>>n>>m;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i = 1;i<=m;i++){
int x,y; cin>>x>>y;
cout<<bfs(x,y)<<endl;
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...