nelson33

Untitled

Dec 9th, 2022
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.09 KB | Source Code | 0 0
  1. #include<stdio.h>
  2.  
  3. int dx[4]={1,-1,0,0}, dy[4]={0,0,1,-1},N,M,ans;
  4. char map[1005][1005],record[1005][1005];
  5.  
  6. void f(int n,int m){
  7.     if(n==N-1 && m==M-1){
  8.         ans=1;
  9.         return;
  10.     }
  11.     else if(n>=0 && n<N && m>=0 && m<M && (map[n][m]=='*' || map[n][m]=='T')){
  12.         if(map[n][m]=='T'){
  13.             for(int i=0;i<4;i++){
  14.                 int nx=n+dx[i], ny=m+dy[i];
  15.                 f(nx,ny);
  16.             }
  17.             for(int i=0;i<N;i++){
  18.                 for(int j=0;j<M;j++){
  19.                     if(map[i][j]=='T' && i!=n && j!=m){
  20.                         f(i,j);
  21.                     }
  22.                 }
  23.             }
  24.         }
  25.         else{
  26.             for(int i=0;i<4;i++){
  27.                 int mx=n+dx[i], my=m+dy[i];
  28.                 f(mx,my);
  29.             }
  30.         }
  31.     }
  32.     return;
  33. }
  34.  
  35.  
  36. int main(){
  37.     int T;
  38.     scanf("%d",&T);
  39.     while(T--){
  40.         ans=-1;
  41.         scanf("%d%d",&N,&M);
  42.         for(int i=0;i<N;i++){
  43.             scanf("%s",map[i]);
  44.         }
  45.         f(0,0);
  46.         if(ans) printf("Yes\n");
  47.         else printf("No\n");
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment