1256:献给阿尔吉侬的花束
2021/8/13 23:07:25
本文主要是介绍1256:献给阿尔吉侬的花束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
献给阿尔吉侬的花束
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 using namespace std; 6 7 const int N=205; 8 char a[N][N]; 9 int r,c,b[N][N],t[]={1,0,-1,0,0,1,0,-1}; 10 queue<int> q; 11 12 void bfs(){ 13 while(!q.empty()){ 14 int x=q.front(); 15 q.pop(); 16 int y=q.front(); 17 q.pop(); 18 for(int i=0;i<4;i++){ 19 int nx=x+t[i],ny=y+t[i+4]; 20 if(nx>0&&nx<=r&&ny>0&&ny<=c&&(a[nx][ny]=='.'||a[nx][ny]=='E')&&(!b[nx][ny]||b[nx][ny]>b[x][y]+1)){ 21 q.push(nx),q.push(ny); 22 b[nx][ny]=b[x][y]+1; 23 } 24 } 25 } 26 } 27 int main(){ 28 int x1,y1,x2,y2,n; 29 char cc; 30 cin>>n; 31 while(n--){ 32 cin>>r>>c; 33 getchar(); 34 for(int i=1;i<=r;i++){ 35 for(int j=1;j<=c;j++){ 36 scanf("%c",&cc); 37 if(cc=='S'){ 38 x1=i,y1=j; 39 }else if(cc=='E'){ 40 x2=i,y2=j; 41 } 42 a[i][j]=cc; 43 } 44 getchar(); 45 } 46 memset(b,0,sizeof(b)); 47 q.push(x1),q.push(y1); 48 bfs(); 49 if(b[x2][y2])printf("%d\n",b[x2][y2]); 50 else printf("oop!\n"); 51 } 52 return 0; 53 }
这篇关于1256:献给阿尔吉侬的花束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求