关注
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<ctime>
#include<cstdlib>
using namespace std;
int n;
int a[5100][5100];
int dir[4][2]={0,1,0,-1,1,0,-1,0};
int vis[5100][5100];
struct node
{
int x,y,dis;
node(){}
node(int xx,int yy,int ddis):x(xx),y(yy),dis(ddis){}
};
vector<node> ve;
int bfs()
{
queue<node> q0,q1;
ve.clear();
q0.push(node(0,0,0));
vis[0][0]=1;
while(1)
{
bool judge=false;
while(!q0.empty())
{
judge=true;
node z=q0.front();q0.pop();
if(z.x==n-1&&z.y==n-1) return z.dis;
for(int i=0;i<4;i++)
{
int nx=z.x+dir[i][0];
int ny=z.y+dir[i][1];
if(nx<0||nx>=n||ny<0||ny>=n) continue;
if(vis[nx][ny]) continue;
if(a[nx][ny]==0) q0.push(node(nx,ny,z.dis));
else q1.push(node(nx,ny,z.dis+1));
vis[nx][ny]=1;
}
}
if(!judge)
{
int sz=(int)ve.size();
for(int i=0;i<sz;i++)
{
q1.push(ve[i]);
vis[ve[i].x][ve[i].y]=1;
}
ve.clear();
}
while(!q1.empty())
{
node z=q1.front();q1.pop();
if(z.x==n-1&&z.y==n-1) return z.dis;
for(int i=0;i<4;i++)
{
int nx=z.x+dir[i][0];
int ny=z.y+dir[i][1];
if(nx<0||nx>=n||ny<0||ny>=n) continue;
if(vis[nx][ny]) continue;
if(a[nx][ny]==0)
{
q0.push(node(nx,ny,z.dis));
vis[nx][ny]=1;
}
else ve.push_back(node(nx,ny,z.dis+1));
}
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
memset(vis,0,sizeof(vis));
printf("%d\n",bfs());
}
return 0;
} 第三题
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-23 11:14
广州新华学院 嵌入式软件工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# offer帮选 #
4820693次浏览 29246人参与
# 0经验如何找实习? #
2697次浏览 75人参与
# 百融云创求职进展汇总 #
4654次浏览 61人参与
# 校招薪资来揭秘 #
356838次浏览 1936人参与
# 你找工作经历过哪些骗局? #
1253次浏览 34人参与
# OC/开奖 #
283712次浏览 1756人参与
# 产品每日一题 #
72361次浏览 641人参与
# 你开始找寒假实习了吗? #
2411次浏览 35人参与
# 实习,不懂就问 #
135501次浏览 1259人参与
# 如果公司降薪,你会跳槽吗? #
108455次浏览 672人参与
# Offer比较,你最看重什么? #
242245次浏览 1499人参与
# 职场新人体验 #
152836次浏览 1112人参与
# 跳槽时有那些注意事项 #
113304次浏览 581人参与
# 腾讯工作体验 #
536814次浏览 3614人参与
# 互联网公司爆料 #
156030次浏览 720人参与
# 2025年终总结 #
23314次浏览 316人参与
# 实习必须要去大厂吗? #
161920次浏览 1604人参与
# 秋招被确诊为…… #
273482次浏览 1570人参与
# 你会为了工作牺牲生活吗? #
64498次浏览 434人参与
# 实习中的菜狗时刻 #
449960次浏览 3517人参与
# 如果上班像打游戏,你最想解锁什么技能 #
16767次浏览 88人参与
传音控股晋升空间 52人发布
