求助,bfs只过了50%

https://ac.nowcoder.com/acm/contest/23156/1014

#include<bits/stdc++.h>

using namespace std;

const int N=1000;

int dx[]={1,-1,0,0};

int dy[]={0,0,-1,1};

int stx,sty,edx,edy;

int v[N][N]={0};

struct point{

int x;

int y;

};

queue<point> q;

int t,n,m;

char s[N][N];

void bfs()

{

int flag=1;

q.push({stx,sty});

v[stx][sty]=1;

while(!q.empty())

{

point t=q.front();

q.pop();

if(t.x==edx&&t.y==edy)

{

cout<<"YES"<<endl;

flag=0;

break;

}

else{

for(int i=0;i<4;i++)

{

int tx=t.x+dx[i];

int ty=t.y+dy[i];

if(tx<1||tx>n||ty<1||ty>m) continue;

if(v[tx][ty]==0)

if(s[tx][ty]=='.'||s[tx][ty]=='t')

{

q.push({tx,ty});

v[tx][ty]=1;

}

}

}

}

if(flag)

cout<<"NO"<<endl;

}

int main()

{

cin>>t;

while(t--)

{

cin>>n>>m;

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

{

cin>>s[i][j];

if(s[i][j]=='s')

{

stx=i;

sty=j;

}

if(s[i][j]=='t')

{

edx=i;

edy=j;

}

}

bfs();

}

return 0;

}

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
牛客44320985...:你的当务之急是把这个糖的要死的沟槽ide主题改了
点赞 评论 收藏
分享
03-14 16:04
已编辑
安徽农业大学 算法工程师
痴心的她allin秋...:啥笔试都挂怎么办,某9本考研下岸,练也没时间了,对算法也不感兴趣,大部分大厂笔试只能A0-1个😄
米哈游笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务