Getting TLE dont know why?


#1

bool isvalid(int i,int j,int n,int m){
if(i<0 || j<0 || i>=n|| j>=m)
return false;
return true;
}

string temp;
int flag;
void dfs(vector &A,int i,int j,int n,int m,int c,string B){
if(flag==1)
return;
if(isvalid(i,j,n,m) /&& !vis[i][j]/){
//vis[i][j]=true;
if(A[i][j]==B[c]){
temp+=A[i][j];

   // cout << i << j <<"ij"<< " ";
    if(temp==B){
        flag=1;   
    
        return;
    }
    
    int x[]={-1,0,1,0};
    int y[]={0,-1,0,1};
    int k;
    for(k=0;k<4;k++){
        int a=i+x[k];
        int b=j+y[k];
       // cout << a << b<< c << " ";
        dfs(A,a,b,n,m,c+1,B);
        //cout << a << b << "ab" << " ";
    }
    }
}

}
int Solution::exist(vector &A, string B) {
int n=A.size();
int m=A[0].size();

flag=0;
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(A[i][j]==B[0]){
            if(flag==1)
                break;
            temp="";
            dfs(A,i,j,n,m,0,B);
        }
    }
    if(flag==1)
        break;
}
if(flag==1)
    return 1;
else 
    return 0;

}