题目大意:一张图,问从起点到终点的最短时间是多少。方向转动也消耗时间。

题目分析:图的广度优先遍历。。。

代码如下:

# include<iostream>
# include<cstdio>
# include<queue>
# include<cstring>
# include<algorithm>
using namespace std; struct Node
{
int x,y,f,l,t;
Node(int _x,int _y,int _f,int _l,int _t):x(_x),y(_y),f(_f),l(_l),t(_t){}
bool operator < (const Node &a) const {
return t>a.t;
}
};
int d[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int vis[30][30][4][5],n,m;
char p[30][30]; void bfs(int sx,int sy)
{
priority_queue<Node>q;
memset(vis,0,sizeof(vis));
vis[sx][sy][0][0]=1;
q.push(Node(sx,sy,0,0,0));
while(!q.empty())
{
Node u=q.top();
q.pop();
if(p[u.x][u.y]=='T'&&u.l==0){
printf("minimum time = %d sec\n",u.t);
return ;
}
if(!vis[u.x][u.y][(u.f+3)%4][u.l]){
vis[u.x][u.y][(u.f+3)%4][u.l]=1;
q.push(Node(u.x,u.y,(u.f+3)%4,u.l,u.t+1));
}
if(!vis[u.x][u.y][(u.f+1)%4][u.l]){
vis[u.x][u.y][(u.f+1)%4][u.l]=1;
q.push(Node(u.x,u.y,(u.f+1)%4,u.l,u.t+1));
}
int nx=u.x+d[u.f][0],ny=u.y+d[u.f][1];
if(nx<0||nx>=n||ny<0||ny>=m||p[nx][ny]=='#') continue;
if(!vis[nx][ny][u.f][(u.l+1)%5]){
vis[nx][ny][u.f][(u.l+1)%5]=1;
q.push(Node(nx,ny,u.f,(u.l+1)%5,u.t+1));
}
}
printf("destination not reachable\n");
} int main()
{
int sx,sy,cas=0,flag=0;
while(scanf("%d%d",&n,&m)&&(n+m))
{
if(flag) printf("\n");
flag=1;
for(int i=0;i<n;++i){
scanf("%s",p[i]);
for(int j=0;j<m;++j)
if(p[i][j]=='S')
sx=i,sy=j;
}
printf("Case #%d\n",++cas);
bfs(sx,sy);
}
return 0;
}

  

UVA-10047 The Monocycle (图的BFS遍历)的更多相关文章

  1. 图的bfs遍历模板(邻接矩阵存储和邻接表存储)

    bfs遍历图模板伪代码: bfs(u){ //遍历u所在的连通块 queue q; //将u入队 inq[u] = true; while (q非空){ //取出q的队首元素u进行访问 for (从u ...

  2. UVA 10047 - The Monocycle BFS

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  3. UVA 10047 The Monocycle

    大白图论第二题··· 题意:独轮车的轮子被均分成五块,每块一个颜色,每走过一个格子恰好转过一个颜色. 在一个迷宫中,只能向前走或者左转90度或右转90度(我曾天真的认为是向左走和向右走···),每个操 ...

  4. UVA 10047 The Monocycle (状态记录广搜)

    Problem A: The Monocycle  A monocycle is a cycle that runs on one wheel and the one we will be consi ...

  5. uva 10047 The Monocycle(搜索)

    好复杂的样子..其实就是纸老虎,多了方向.颜色两个状态罢了,依旧是bfs. 更新的时候注意处理好就行了,vis[][][][]要勇敢地开. 不过这个代码交了十几遍的submission error,手 ...

  6. UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题

    很少用bfs进行最短路搜索,实际BFS有时候挺方便得,省去了建图以及复杂度也降低了O(N*M): UVA 11624 写的比较挫 #include <iostream> #include ...

  7. 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题

    这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...

  8. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

  9. 图的深度优先遍历(DFS)和广度优先遍历(BFS)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

随机推荐

  1. Ajax跨域请求 同源策略与Jsonp

    同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...

  2. The adidas NMD XR1 singapore is a bit more cool

    The adidas NMD Singapore continues to be the right silhouette for summer time because of a mix of a ...

  3. iClap助力移动互联网企业高效实现规范化管理

    移动互联网的迅速崛起,智能移动客户端深刻而全面地影响着人类生活与工作习惯.而企业办公已从原始的纸张办公,到固定PC办公,跨入到一个应用范围更广.效率更高的移动办公时代.由静生动,让企业办公更加人性化和 ...

  4. WebSocket安卓客户端实现详解(一)–连接建立与重连

    http://blog.csdn.net/zly921112/article/details/72973054 前言 这里特别说明下因为WebSocket服务端是公司线上项目所以这里url和具体协议我 ...

  5. OpenStack之Glance模块

    一.Glance服务 1.Glance架构 Glance架构是一个典型的CS架构,提供的也是标准的Rest接口,各个layer分层也是很清楚的. 2.Glance服务 Glance是OpenStack ...

  6. 从页面到服务器,node实现文件下载

    起因: 新来了一个需求,让用户下载一个200m的zip文件,并且校验用户信息,难点:下载的文件是200M的. 现在维护的系统,以前的文件下载,走的是node的静态文件,用的express框架上自带的静 ...

  7. hashmap总结2

    1.  关于HashMap的一些说法: a)  HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体.HashMap的底层结构是一个数组,数组中的每一项是一条链表. b)  Hash ...

  8. mvn设置

    mvn仓库网址: https://mvnrepository.com 安装好maven后,一定要确认安装路径下的setting.xml与本地仓库中的setting.xml一致. 坐标: 什么是坐标? ...

  9. Spring多开发环境配置

    在项目开发中,多环境的的配置可以方便在不同环境的切换,减少错误的产生 一.properties文件的多环境配置 properties文件可以根据不同的后缀来区分不同的环境 application.pr ...

  10. ssm中不能访问静态资源问题

    最近用springmvc spring mybatis框架写程序,请求成功并获得数据,唯独css样式不能加载,但路径正确,css文件编码也是utf-8,用火狐debug总是显示未请求到(都快怀疑自己写 ...