Codeforces Round 1133 (Div. 1, Div. 2) is coming soon! Register here. ×
CSES Labryinth TLE?
Difference between en1 and en2, changed 23 character(s)
I have commented the code at places. I can't understand why the code gives TLE. 1 test case gives TLE.I have tried to optimise it as much as I could but still TLE. Help would be appreciated. I have used breadth first search to solve the problem.[The problem](https://cses.fi/problemset/task/1193/)↵
↵
Also what would be worst case complexity?↵
↵
<spoiler summary="Code">↵
~~~~~↵
#include <bits/stdc++.h>↵
↵
using namespace std;↵
↵
long long n,m;↵
↵
string pr="";↵
↵
char ch[1002][1002];↵
↵
long long dx[4]={1,0,-1,0};↵
long long dy[4]={0,1,0,-1};↵
↵
/*checks valididty of cell*/↵
↵
bool is(long long x,long long y)↵
{↵
    //cout<<ch[x][y]<<" ";↵
    return (x>=0&&y>=0&&x<n&&y<m&&ch[x][y]!='#');↵
}↵
↵
string l[4]={"D","R","U","L"};↵
↵
struct vert↵
{↵
    long long a;↵
    long long b;↵
    string c;↵
};↵
↵
int main()↵
{↵
    ios_base::sync_with_stdio(false);↵
    cin.tie(NULL);↵
    long long x,y,i,j,sti,stj,ndi,ndj;↵
    cin>>n>>m;↵
    long long vis[n+1][m+1];↵
    for(i=0;i<n;i++)↵
    {↵
        for(j=0;j<m;j++)↵
        {↵
            vis[i][j]=0;↵
            cin>>ch[i][j];↵
            /*start*/↵
            if(ch[i][j]=='A'){sti=i;stj=j;}↵
            /*end*/↵
            if(ch[i][j]=='B'){ndi=i;ndj=j;}↵
        }↵
    }↵
    queue<vert> q;↵
    /*The queue wil store the coordinate as well as string*/↵
    q.push({sti,stj,""});↵
    /*bfs*/↵
    while(!q.empty())↵
    {↵
       x=q.front().a;↵
       y=q.front().b;↵
       string s=q.front().c;↵
       vis[x][y]=1;↵
       q.pop();↵
       for(i=0;i<4;i++)↵
       {↵
           if(is(x+dx[i],y+dy[i])&&!vis[x+dx[i]][y+dy[i]])↵
           {↵
               /*pr is required string that we wnt to print*/↵
              if(x+dx[i]==ndi&&y+dy[i]==ndj&&(s.length()+1<pr.length()||pr.length()==0)){pr=s+l[i];}↵
              if(pr.size()==0||s.length()+1<pr.length()){q.push({x+dx[i],y+dy[i],s+l[i]});}↵
              vis[x+dx[i]][y+dy[i]]=1;↵
           }↵
       }↵
    }↵
    if(pr==""){cout<<"NO";exit(0);}↵
    else↵
    {↵
        cout<<"YES"<<"\n";↵
        cout<<pr.length()<<"\n";↵
        cout<<pr<<"\n";↵
    }↵
    return 0;↵
}↵
↵
~~~~~↵
</spoiler>↵
↵
↵

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English Forrest_Gump 2020-11-26 17:22:04 23 Tiny change: 'ives TLE. I have tri' -> 'ives TLE. 1 test case gives TLE.I have tri'
en1 English Forrest_Gump 2020-11-26 17:21:05 2133 Initial revision (published)