#include<bits/stdc++.h>
using namespace std;
struct node {
char color;
int px;
int py;
};
node a[101][101];
int n,m,cnt,d[2][4]= {{0,1,0,-1},{-1,0,1,0}};
queue <node> q;
int main() {
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++) {
for(int j=1; j<=m+1; j++) {
scanf("%c",&a[i][j].color);
if(j!=10){
a[i][j].px=i;
a[i][j].py=j;
}
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(a[i][j].color!='0'){
q.push(a[i][j]);
while(!q.empty()) {
for(int i=0; i<4; i++) {
int fx=q.front().px+d[0][i];
int fy=q.front().py+d[1][i];
if(fx>0&&fx<=n&&fy>0&&fy<=m&&a[fx][fy].color!='0'){
a[fx][fy].color='0';
q.push(a[fx][fy]);
}
}
}
cnt++;
}
}
}
printf("%d\n",cnt);
return 0;
}
(板子题代码改编)
#include<bits/stdc++.h>
using namespace std;
struct node {
int height;
int ptx;
int pty;
};
node a[1001][1001];
bool fit[1001][1001];
int n,m,p1,p2,cnt,d[2][4]= {{0,1,0,-1},{-1,0,1,0}};
queue <node> q;
int main() {
scanf("%d%d%d%d",&n,&m,&p1,&p2);
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
scanf("%d",&a[i][j].height);
a[i][j].ptx=i;
a[i][j].pty=j;
}
}
q.push(a[p1][p2]);
fit[p1][p2]=true;
while(!q.empty()) {
for(int i=0; i<4; i++) {
int fx=q.front().ptx+d[0][i];
int fy=q.front().pty+d[1][i];
if(fx>0&&fx<=n&&fy>0&&fy<=m&&a[p1][p2].height>=a[fx][fy].height&&fit[fx][fy]==false){
fit[fx][fy]=true;
q.push(a[fx][fy]);
}
}
// cout<<q.front().height<<" "<<q.front().ptx<<" "<<q.front().pty<<endl;
q.pop();
cnt++;
}
printf("%d\n",cnt);
return 0;
}