代码如下
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,x,y,s1,t,w,xx,yy;
char s;
vector<int> a[100010];
struct node{int x,y;};
queue<node>p;
int tag[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
signed main(){
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
getchar();getchar();
for(j=0;j<m;j++){
s=getchar();
if(s=='S')a[i].push_back(1);
else if(s=='M')a[i].push_back(5);
else if(s=='L')a[i].push_back(10);
else a[i].push_back(0);
}
}
scanf("%d%d",&x,&y);
p.push({x,y});
while(!p.empty()){
x=p.front().x;y=p.front().y;
p.pop();
s1+=a[x][y];
a[x][y]=0;
for(i=0;i<4;i++){
xx=x+tag[i][0];yy=y+tag[i][1];
if(xx<0||yy<0||xx>=n||yy>=m||a[xx][yy]==0)continue;
p.push({xx,yy});
}
}
printf("%d",s1);
return 0;
}