@[mzm0917](/user/708997) 有点好奇,它的 $\bmod p$ 意义下的除法是怎么进行的,$p$ 甚至不是质数。
by Usada_Pekora @ 2023-03-23 21:20:26
@[Usada_Pekora](/user/434929)
我也不知道啊,我从小语文学的就不太好
我第一题昨完直接就做的T4
by jlwz @ 2023-03-23 21:25:05
@[mzm0917](/user/708997) 不是,$\bmod$ 一个非质数的除法是没有意义的。
可以学习一下乘法逆元。
by Usada_Pekora @ 2023-03-23 21:28:22
@[Usada_Pekora](/user/434929)
好的
不过最后一个题我还是没有做出来
下面是我的代码,有点长
```cpp
#include<bits/stdc++.h>
using namespace std;
int n=1,m=1,qx,qy;
char ch[666][666];
bool vis[666][666];
int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
struct node{
int x,y,step;
node(int xx,int yy,int s)
{
x=xx;y=yy;step=s;
}
};
int ans=-12;
int flag=1;
void bfs(int i,int j)
{
queue<node> q;
memset(vis,0,sizeof(vis));
q.push(node(i,j,1));
vis[i][j]=1;
int head=0,tail=1;
while(q.empty()==0)
{
if(ch[q.front().x][q.front().y]=='E')
{
if(q.front().step-1>ans)
{
ans=q.front().step-1;
if(flag==0)
{
flag=2;
return ;
}
flag=0;
}
memset(vis,0,sizeof(vis));
q.pop();
if(q.empty()==1)
return ;
}
for(int i=0;i<4;i++)
{
int x0=dir[i][0]+q.front().x;
int y0=dir[i][1]+q.front().y;
if(x0>=0&&y0>=0&&x0<n&&y0<m&&vis[x0][y0]==0&&ch[x0][y0]!='#')
{
vis[x0][y0]=1;
q.push(node(x0,y0,q.front().step+1));
}
}
q.pop();
}
}
void init(int n,int m)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>ch[i][j];
if(ch[i][j]=='S')
{
qx=i;
qy=j;
}
}
bfs(qx,qy);
}
int main()
{
cin>>n>>m;
init(n,m);
if(flag==2)
cout<<ans<<endl;
else
cout<<-1<<endl;
return 0;
}
by jlwz @ 2023-03-23 21:30:45