蒟蒻求助ZOI 2594MLE https://zoj.pintia.cn/problem-sets/91827364500/problems/91827366093
#include <bits/stdc++.h>
using namespace std;
short a,b,e[802][802],d,y,z,x,s,p1,p2,xh,yy,aa,bb;
bool ppp[802][802];
char c[802];
int main()
{
// freopen("a.in","r",stdin);
cin>>xh;
for(int ll=0;ll<xh;ll++)
{
for(int i=a*2-1;i>=1;i--)
{
for(int j=1;j<=b*2-1;j++)
{
e[i][j]=0;
ppp[i][j]=0;
}
}
cin>>a>>b;
for(int i=a*2;i>=1;i--)
{
cin.getline(c,800);
yy=strlen(c);
aa=b*2-1;
for(int j=1;j<=min(yy,aa);j++)
{
if(c[j-1]=='-'||c[j-1]=='+'||c[j-1]=='|')
e[i][j]=1;
}
}
queue<short int>q1;//a
queue<short int>q2;//b
queue<short int>q3;
q1.push(a*2-1);
q2.push(b*2-1);
q3.push(1);
while(!q1.empty())
{
if(e[q1.front()+1][q2.front()]>=1&&ppp[q1.front()+1][q2.front()]==0&&q1.front()+1<=a*2-1)
{
q1.push(q1.front()+1);
q2.push(q2.front());
q3.push(q3.front()+1);
}
if(e[q1.front()][q2.front()+1]>=1&&ppp[q1.front()][q2.front()+1]==0&&q2.front()+1<=b*2-1)
{
q1.push(q1.front());
q2.push(q2.front()+1);
q3.push(q3.front()+1);
}
if(e[q1.front()][q2.front()-1]>=1&&ppp[q1.front()][q2.front()-1]==0&&q2.front()-1>=1)
{
q1.push(q1.front());
q2.push(q2.front()-1);
q3.push(q3.front()+1);
}
if(e[q1.front()-1][q2.front()]>=1&&ppp[q1.front()-1][q2.front()]==0&&q1.front()-1>=1)
{
q1.push(q1.front()-1);
q2.push(q2.front());
q3.push(q3.front()+1);
}
ppp[q1.front()][q2.front()]=1;
e[q1.front()][q2.front()]=q3.front();
q1.pop();
q2.pop();
q3.pop();
}
/* for(int i=a*2-1;i>=1;i--)
{
for(int j=1;j<=b*2-1;j++)
{
cout<<e[i][j]<<" ";
}
cout<<endl;
}*/
s=1;
y=0;
x=0;
z=0;
p1=1;
p2=1;
if(e[p1+1][p2]==e[p1][p2]-1)
{
cout<<"N";
p1+=2;
s=1;
}
else
{
cout<<"E";
p2+=2;
s=0;
y=1;
}
cout<<endl;
while(1)
{
// if(p2!=-1)
// cout<<p1<<" "<<p2<<endl;
if(p1==a*2-1&&p2==b*2-1)
{
break;
}
if(s==1)
{
if(e[p1+1][p2]==e[p1][p2]-1&&p1+1<=a*2-1)
{
cout<<"F";
p1+=2;
}
else if(e[p1][p2-1]==e[p1][p2]-1&&p2-1>=1)
{
cout<<"L";
p2-=2;
s=0;
z=1;
}
else if(e[p1][p2+1]==e[p1][p2]-1&&p2+1<=b*2-1)
{
cout<<"R";
p2+=2;
s=0;
y=1;
}
}
else if(z==1)
{
if(e[p1][p2-1]==e[p1][p2]-1&&p2-1>=1)
{
cout<<"F";
p2-=2;
}
else if(e[p1+1][p2]==e[p1][p2]-1&&p1+1<=a*2-1)
{
cout<<"R";
p1+=2;
s=1;
z=0;
}
else if(e[p1-1][p2]==e[p1][p2]-1&&p1-1>=1)
{
cout<<"L";
p1-=2;
z=0;
x=1;
}
}
else if(x==1)
{
if(e[p1-1][p2]==e[p1][p2]-1&&p1-1>=1)
{
cout<<"F";
p1-=2;
}
else if(e[p1][p2-1]==e[p1][p2]-1&&p2-1>=1)
{
cout<<"R";
p2-=2;
x=0;
z=1;
}
else if(e[p1][p2+1]==e[p1][p2]-1&&p2+1<=b*2-1)
{
cout<<"L";
p2+=2;
x=0;
y=1;
}
}
else if(y==1)
{
if(e[p1][p2+1]==e[p1][p2]-1&&p2+1<=b*2-1)
{
cout<<"F";
p2+=2;
}
else if(e[p1+1][p2]==e[p1][p2]-1&&p1+1<=a*2-1)
{
cout<<"L";
p1+=2;
s=1;
y=0;
}
else if(e[p1-1][p2]==e[p1][p2]-1&&p1-1>=1)
{
cout<<"R";
p1-=2;
y=0;
x=1;
}
}
}
cout<<endl;
}
// fclose(stdin);
return 0;
}
限制65536KB,求各位大佬帮忙看看