![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <fstream> 3 #include <map> 4 #include <cstring> 5 #include <cstdio> 6 #include <cstdlib> 7 #include <queue> 8 9 using namespace std; 10 11 char arr[2][15][15]; 12 int time; 13 int flag; 14 int visited[2][15][15]; 15 16 void dfs(int r,int x,int y,int cnt) 17 { 18 if(flag) 19 return ; 20 if(cnt>time) 21 return ; 22 if(arr[r][x][y]=='P') 23 { 24 flag=1; 25 return ; 26 } 27 // system("pause"); 28 // cout<<r<<" "<<x<<" "<<y<<" "<<cnt<<endl; 29 if(visited[r][x+1][y]==0) 30 { 31 if(arr[r][x+1][y]=='.') 32 { 33 visited[r][x+1][y]=1; 34 dfs(r,x+1,y,cnt+1); 35 visited[r][x+1][y]=0; 36 } 37 else if(arr[r][x+1][y]=='#') 38 { 39 visited[1-r][x+1][y]=1; 40 dfs(1-r,x+1,y,cnt+1); 41 visited[1-r][x+1][y]=0; 42 } 43 else if(arr[r][x+1][y]=='P') 44 { 45 visited[r][x+1][y]=1; 46 dfs(r,x+1,y,cnt+1); 47 visited[r][x+1][y]=0; 48 } 49 } 50 if(visited[r][x][y+1]==0) 51 { 52 if(arr[r][x][y+1]=='.') 53 { 54 visited[r][x][y+1]=1; 55 dfs(r,x,y+1,cnt+1); 56 visited[r][x][y+1]=0; 57 } 58 else if(arr[r][x][y+1]=='#') 59 { 60 visited[1-r][x][y+1]=1; 61 dfs(1-r,x,y+1,cnt+1); 62 visited[1-r][x][y+1]=0; 63 } 64 else if(arr[r][x][y+1]=='P') 65 { 66 visited[r][x][y+1]=1; 67 dfs(r,x,y+1,cnt+1); 68 visited[r][x][y+1]=0; 69 } 70 } 71 if(visited[r][x-1][y]==0) 72 { 73 if(arr[r][x-1][y]=='.') 74 { 75 visited[r][x-1][y]=1; 76 dfs(r,x-1,y,cnt+1); 77 visited[r][x-1][y]=0; 78 } 79 else if(arr[r][x-1][y]=='#') 80 { 81 visited[1-r][x-1][y]=1; 82 dfs(1-r,x-1,y,cnt+1); 83 visited[1-r][x-1][y]=0; 84 } 85 else if(arr[r][x-1][y]=='P') 86 { 87 visited[r][x-1][y]=1; 88 dfs(r,x-1,y,cnt+1); 89 visited[r][x-1][y]=0; 90 } 91 } 92 if(visited[r][x][y-1]==0) 93 { 94 if(arr[r][x][y-1]=='.') 95 { 96 visited[r][x][y-1]=1; 97 dfs(r,x,y-1,cnt+1); 98 visited[r][x][y-1]=0; 99 } 100 else if(arr[r][x][y-1]=='#') 101 { 102 visited[1-r][x][y-1]=1; 103 dfs(1-r,x,y-1,cnt+1); 104 visited[1-r][x][y-1]=0; 105 } 106 else if(arr[r][x][y-1]=='P') 107 { 108 visited[r][x][y-1]=1; 109 dfs(r,x,y-1,cnt+1); 110 visited[r][x][y-1]=0; 111 } 112 } 113 } 114 115 int main() 116 { 117 int T; 118 scanf("%d",&T); 119 while(T--) 120 { 121 int n,m; 122 flag=0; 123 memset(arr,'*',sizeof(arr)); 124 memset(visited,0,sizeof(visited)); 125 scanf("%d%d%d",&n,&m,&time); 126 for(int i=0;i<=1;i++) 127 { 128 for(int j=0;j<n;j++) 129 { 130 scanf("%s",&arr[i][j]); 131 } 132 } 133 for(int i=0;i<=1;i++) 134 { 135 for(int j=0;j<n;j++) 136 { 137 for(int t=0;t<m;t++) 138 { 139 if(arr[i][j][t]=='#') 140 { 141 if(arr[1-i][j][t]=='*'||arr[1-i][j][t]=='#') 142 arr[i][j][t]='*'; 143 } 144 } 145 } 146 } 147 dfs(0,0,0,0); 148 if(flag) 149 cout<<"YES"<<endl; 150 else 151 cout<<"NO"<<endl; 152 } 153 return 0; 154 }