#include<iostream> #include<string> #include<cstring> using namespace std; char arr[1000][1000]; bool isvisited[1000][1000]; int direction[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int t; bool dfs(int x,int y,int n,int m,int count){ isvisited[x][y]=true; if(arr[x][y]=='F'&&count<=t){ return true; } for(int i=0;i<4;i++){ if(x+direction[i][0]>=0&&x+direction[i][0]<n&& y+direction[i][1]>=0&&y+direction[i][1]<m&& isvisited[x+direction[i][0]][y+direction[i][1]]==false&& arr[x+direction[i][0]][y+direction[i][1]]!='#'){ if(dfs(x+direction[i][0],y+direction[i][1],n,m,count+1)==true)return true; } } isvisited[x][y]=false; return false; } int main() { int n,m; while(cin>>n>>m>>t){ memset(arr,' ',sizeof(arr)); memset(isvisited,false,sizeof(isvisited)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>arr[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(arr[i][j]=='S'){ if(dfs(i,j,n,m,0)){ cout<<"Happy"<<endl; }else{ cout<<"Cry"<<endl; } } } } } return 0; } |
Double click to view unformatted code.