Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<string.h>#include<queue>using namespace std;struct Step{int x;int step;Step(int a,int b):x(a),step(b){}};queue<Step> q;const int MAXNUM=3000;int n,m,t=0,init,minx=MAXNUM;char a[10000];int x[10000],y[10000];//记录有2个S连在一起的坐标int dfs(int begin,int end);int main(){cin>>n>>m;for(int i=0;i!=n*m;++i){cin>>a[i];if(a[i]=='H') init=i;if(i==0) continue;if(a[i]=='S'&&i%m>0&&a[i-1]=='S'){x[t]=i;y[t]=i-1;++t;}if(i-m<0) continue;if(a[i]=='S'&&a[i-m]=='S'){x[t]=i;y[t]=i-m;++t;}}if(x[0]==0&&y[0]==0){cout<<"Hi and Ho will not have lunch."<<endl; return 0;}for(int k=0;k<t;++k)