Problem: Example

Input

2 4
%.@\$
..\$\$


Output

Yes

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
#define N 201
using namespace std;
typedef pair<int,int> P;
int h,w;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
string mp[N];

int bfs(char s){
  queue<P> Q;
  int D[N][N];
  memset(D,-1,sizeof(D));
  for(int i=0;i<h;i++)
    for(int j=0;j<w;j++) 
      if(mp[i][j]==s)Q.push(P(i,j)),D[i][j]=0;

  while(!Q.empty()){
    P t=Q.front();Q.pop();
    int y=t.first,x=t.second;
    if(mp[y][x]=='\%') return D[y][x];
    for(int i=0;i<4;i++){
      int ny=y+dy[i],nx=x+dx[i];
      if(nx<0||ny<0||nx>=w||ny>=h||D[ny][nx]!=-1||mp[ny][nx]=='#')continue;
      
      Q.push(P(ny,nx));
      D[ny][nx]=D[y][x]+1;
    }
  }
  return 1e9;
}

int main(){
  cin>>h>>w;
  for(int i=0;i<h;i++)cin>>mp[i];
  cout <<((bfs('@')<bfs('$'))? "Yes":"No")<<endl;

  return 0;
}