Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int dx[4]={1,-1,0,0}, dy[4]={0,0,1,-1},N,M,ans;
- char map[1005][1005],record[1005][1005];
- void f(int n,int m){
- if(n==N-1 && m==M-1){
- ans=1;
- return;
- }
- else if(n>=0 && n<N && m>=0 && m<M && (map[n][m]=='*' || map[n][m]=='T')){
- if(map[n][m]=='T'){
- for(int i=0;i<4;i++){
- int nx=n+dx[i], ny=m+dy[i];
- f(nx,ny);
- }
- for(int i=0;i<N;i++){
- for(int j=0;j<M;j++){
- if(map[i][j]=='T' && i!=n && j!=m){
- f(i,j);
- }
- }
- }
- }
- else{
- for(int i=0;i<4;i++){
- int mx=n+dx[i], my=m+dy[i];
- f(mx,my);
- }
- }
- }
- return;
- }
- int main(){
- int T;
- scanf("%d",&T);
- while(T--){
- ans=-1;
- scanf("%d%d",&N,&M);
- for(int i=0;i<N;i++){
- scanf("%s",map[i]);
- }
- f(0,0);
- if(ans) printf("Yes\n");
- else printf("No\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment