思路:bfs
#includeusing namespace std;typedef long long LL;typedef pair<int,int >PII;const int N&#61;1e5&#43;10;const int mod&#61;100000007;int fx[4]&#61;{1,-1,0,0},fy[4]&#61;{0,0,1,-1};int t;int r,c;char a[205][205];bool sta[205][205];int main(){cin>>t;while(t--){memset(sta,0,sizeof sta);cin>>r>>c;queue<pair<PII,int >> q;int s1&#61;0,s2&#61;0,e1&#61;0,e2&#61;0;for(int i&#61;0;i<r;i&#43;&#43;){for(int j&#61;0;j<c;j&#43;&#43;){//scanf("%c",&a[i][j]);cin>>a[i][j];if(a[i][j]&#61;&#61;&#39;S&#39;) {PII t&#61;{i,j};q.push({t,0});s1&#61;i,s2&#61;j;}else if(a[i][j]&#61;&#61;&#39;E&#39;){e1&#61;i,e2&#61;j;}}}//for(int i&#61;0;i// for(int j&#61;0;j// cout<// }// cout<//}//cout<// cout<bool flag&#61;0;while(q.size()){PII t&#61;q.front().first;int cc&#61;q.front().second;int x&#61;t.first,y&#61;t.second;//cout<q.pop();if(x&#61;&#61;e1&&y&#61;&#61;e2){printf("%d\n",cc);flag&#61;1;break;}for(int i&#61;0;i<4;i&#43;&#43;){int xx&#61;x&#43;fx[i];int yy&#61;y&#43;fy[i];//cout<if(xx<0||xx>&#61;r||yy<0||yy>&#61;c) continue;if(!sta[xx][yy]&&a[xx][yy]!&#61;&#39;#&#39;){q.push({{xx,yy},cc&#43;1});sta[xx][yy]&#61;1;}}}if(flag&#61;&#61;0){puts("oop!");}}return 0;}