#include<iostream> #include<queue> #include<bits/stdc++.h> using namespace std; int xx[4]={-1,1,0,0}; int yy[4]={0,0,1,-1}; char a[1000][1000]; bool vi[105][105]; int n,m; long long t; struct Ch{ int pos; int time; int x1; int y1; }; queue<Ch>q; bool BFS(int x,int y){ Ch fi; fi.x1=x; fi.y1=y; fi.time=0; fi.pos=a[x][y]; //cout<<(char)fi.pos<<endl; q.push(fi); vi[fi.x1][fi.y1]=true; while(!q.empty()){ Ch cur=q.front(); // cout<<cur.x1<<endl; q.pop(); if(cur.pos=='F' && cur.time<=t){ return true; } else{ for(int i=0;i<4;i++){ Ch nei; nei.x1=cur.x1+xx[i]; nei.y1=cur.y1+yy[i]; nei.time=cur.time+1; nei.pos=a[nei.x1][nei.y1]; //cout<<nei.x1<<' '<<nei.y1<<endl; //cout<<(char)nei.pos<<endl; if(nei.x1>=0&&nei.x1<n&&nei.y1>=0&&nei.y1<m&&nei.pos!='#'&&vi[nei.x1][nei.y1]==false){ q.push(nei);vi[nei.x1][nei.y1]=true; } } } } return false; } int main(){ while(cin>>n>>m>>t){ memset(a,'0',sizeof(a)); memset(vi,false,sizeof(vi)); int x,y; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; if(a[i][j]=='S'){ x=i;y=j; //cout<<x<<y<<endl; } } } if(BFS(x,y)){ cout<<"Happy"<<endl; } else{ cout<<"Cry"<<endl; } } } |
Double click to view unformatted code.