博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2579 BFS
阅读量:5949 次
发布时间:2019-06-19

本文共 1142 字,大约阅读时间需要 3 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=2579

题目大意:给定 r * c 的迷宫,还有一个整数 k 。迷宫中“.”表示可以走,“#”表示墙,当时间为k的倍数时,这些墙会消失。求从起点“Y”到终点“G”的最短时间。(人不能呆在一点不动)。

 

#include
#include
#include
#include
#include
#include
#include
#define N 105using namespace std;char map[N][N];int step[N][N][10];//多加一维,记录(time%k)int r,c,k,x_s,y_s,x_e,y_e;int dir[4][2]={0,1,0,-1,1,0,-1,0};struct node{ int x,y,mod;};int BFS(){ int i; queue
q; node now,next; now.x=x_s; now.y=y_s; now.mod=0; memset(step,-1,sizeof(step)); step[now.x][now.y][now.mod]=0; q.push(now); while(!q.empty()){ now=q.front(); q.pop(); if(now.x==x_e && now.y==y_e) return step[now.x][now.y][now.mod]; for(i=0;i<4;i++){ next.x=now.x+dir[i][0]; next.y=now.y+dir[i][1]; next.mod=(now.mod+1)%k; if(next.x<0 || next.x>=r || next.y<0 ||next.y>=c) continue; if(step[next.x][next.y][next.mod]!=-1) continue; if(map[next.x][next.y]=='#' && next.mod!=0) continue; step[next.x][next.y][next.mod]=step[now.x][now.y][now.mod]+1; q.push(next); } } return -1;}int main(){ int T,i,j,ans; scanf("%d",&T); while(T--){ scanf("%d%d%d",&r,&c,&k); for(i=0;i

 

 

转载地址:http://rsixx.baihongyu.com/

你可能感兴趣的文章
Vmware安装报msi错误解决方案(官方翻译中文版)
查看>>
2013 Linux领域年终盘点
查看>>
私有云搭建 OpenStack(centos7.3, centos-release-openstack-liberty) (中篇)
查看>>
Bootstrap3 表单-被支持的控件:输入框
查看>>
Bootstrap3 表单-基本表单
查看>>
【翻译】如何在Ext JS 6中使用Fashion美化应用程序
查看>>
(转载)浅谈javascript中的原型和继承
查看>>
删除存储
查看>>
suffix
查看>>
[十一]基础数据类型之Character
查看>>
webpack+vue自学(2)
查看>>
mysqldump 备份导出数据排除某张表或多张表
查看>>
鼠标滑动一定距离的左侧菜单置顶效果
查看>>
Helloworld模块之内核makefile详解
查看>>
Exchange企业实战技巧(12)通讯组管理
查看>>
linux文件系统安全
查看>>
R语言执行脚本的几种命令
查看>>
bash之正则表达式
查看>>
MySQL5.7 Read Committed事务隔离级别的研究-出现幻读
查看>>
VUE的数据双向绑定
查看>>