ST_jz_xpj @ 2024-09-12 19:58:13
#include<iostream>
#include<queue>
using namespace std;
int n,m,a,b;int q4[1002][1002]={0};int num[100000]={0};
int q1[1002][1002]={0};bool q2[1002][1002]={0};
queue<int> x;
queue<int> y;
void bfs(int i,int j,int now){
if(q2[i][j]!=1){
q4[i][j]=now;
num[now]++;
if(q1[i][j]==0){
if(q1[i+1][j]==1&&i+1<n+1) {x.push(i+1);y.push(j);}
if(q1[i-1][j]==1&&i-1>0) {x.push(i-1);y.push(j);}
if(q1[i][j+1]==1&&j+1<n+1) {x.push(i);y.push(j+1);}
if(q1[i][j-1]==1&&j-1>0) {x.push(i);y.push(j-1);}
}
if(q1[i][j]==1){
if(q1[i+1][j]==0&&i+1<n+1) {x.push(i+1);y.push(j);}
if(q1[i-1][j]==0&&i-1>0) {x.push(i-1);y.push(j);}
if(q1[i][j+1]==0&&j+1<n+1) {x.push(i);y.push(j+1);}
if(q1[i][j-1]==0&&j-1>0) {x.push(i);y.push(j-1);}
}
}
q2[i][j]=1;
x.pop();y.pop();
if(!x.empty())bfs(x.front(),y.front(),now);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)scanf("%1d",&q1[i][j]);
}
int now=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(q2[i][j]!=1){
x.push(i);y.push(j);
bfs(x.front(),y.front(),now);
now++;
}
}
}
for(int i=0;i<m;i++){
cin>>a>>b;
cout<<q4[a][b]<<endl;
}
}
return 0;
}
悬关QAQ!
by Mzh2012 @ 2024-09-12 20:21:00
输入应该是 char
类型,它 0
和 1
之间没有空格。
by Mzh2012 @ 2024-09-12 20:36:25
@ST_jz_xpj
by ST_jz_xpj @ 2024-09-12 20:41:05
蟹蟹! 正在改。 @Mzh2012
by ST_jz_xpj @ 2024-09-12 21:28:29
已过,磁铁节