题意:给你一个迷宫。 先输出当左转优先的时候走的路程长度,再输出当右转优先时走的路程长度,最后输出从起点到终点的最短路程长度。

嗯嗯 奴哥活跃气氛的题。随便写了写。。

此题 知道了思路以后就是水题了。。。。

再随便缩缩行也就不到40行 (网上的题解好多200+的。。)

发现pair是个很坑的角儿。我一不小心就写挂了,重点是本机测试所有数据的输出结果都对。查不出来哪儿错的,,找了5min才找出来。



pair < int,int> *p=&q.front();然后就p->first p->second

改成

pair < int,int> p=q.front() p.first p.second

就AC了。(哎 讲语法课的时候浪过去了)

p是取的q.front()的地址,然后它pop出去了,相当于取了个随时都有可能变的地址,这虽然能水过本机的测试,但评测机就水不过去了。。。

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,m,sx,sy,ex,ey,ansl,ansr,flag=0,Q,cases,vis[55][55];
char a[55][55],lx[]={-1,0,1,0},ly[]={0,1,0,-1},rx[]={1,0,-1,0},ry[]={0,1,0,-1};
inline void dfs(int x,int y,int f,int t,char *xx,char *yy){
if(Q)return;
if(a[x][y]=='E'){
if(flag%2){ansr=t,flag++,Q=1;return;}
else {ansl=t,flag++,Q=1;return;}
}
for(int i=0;i<=3;i++)
if(a[x+xx[(f+i)%4]][y+yy[(f+i)%4]]=='.'||a[x+xx[(f+i)%4]][y+yy[(f+i)%4]]=='E')
dfs(x+xx[(f+i)%4],y+yy[(f+i)%4],(f+i+3)%4,t+1,xx,yy);
}
int bfs(){
queue<pair<int,int> >q;
q.push(make_pair(sx,sy));
while(1){
pair<int,int>p=q.front();q.pop();
if(a[p.first][p.second]=='E')return vis[p.first][p.second];
for(int i=0;i<=3;i++)
if(!vis[p.first+lx[i]][p.second+ly[i]]&&(a[p.first+lx[i]][p.second+ly[i]]=='.'||a[p.first+lx[i]][p.second+ly[i]]=='E'))
vis[p.first+lx[i]][p.second+ly[i]]=vis[p.first][p.second]+1,q.push(make_pair(p.first+lx[i],p.second+ly[i]));
}
}
int main(){
scanf("%d",&cases);
while(cases--){
memset(vis,0,sizeof(vis));
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='S')sx=i,sy=j;
}
Q=0;dfs(sx,sy,0,1,lx,ly);
Q=0;dfs(sx,sy,0,1,rx,ry);
printf("%d %d %d\n",ansl,ansr,bfs()+1);
}
}

POJ 3083 BFS+DFS 40行的更多相关文章

  1. POJ 3083 Bfs+Dfs

    注意求最短路的时候用Bfs. #include<iostream> #include<stdio.h> using namespace std; int w,h,ex,ey,s ...

  2. Q - 迷宫问题 POJ - 3984(BFS / DFS + 记录路径)

    Q - 迷宫问题 POJ - 3984 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...

  3. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  4. poj 3083 dfs,bfs

    传送门    Children of the Candy Corn Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  5. POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)

    思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...

  6. 搜索入门_简单搜索bfs dfs大杂烩

    dfs题大杂烩 棋盘问题  POJ - 1321 和经典的八皇后问题一样.  给你一个棋盘,只有#区域可以放棋子,同时同一行和同一列只能有一个棋子. 问你放k个棋子有多少种方案. 很明显,这是搜索题. ...

  7. Collect More Jewels(hdu1044)(BFS+DFS)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  9. Python人脸识别最佳教材典范,40行代码搭建人脸识别系统!

    Face Id是一款高端的人脸解锁软件,官方称:"在一百万张脸中识别出你的脸."百度.谷歌.腾讯等各大企业都花费数亿来鞭策人工智能的崛起,而实际的人脸识别技术是否有那么神奇? 绿帽 ...

随机推荐

  1. MFC CAD控制权问题

    begineditorcommand(); 隐藏对话框  把控制权交给CAD completeeditorcommand(); 完成交互返回到应用程序 canceleditorcommand CAD被 ...

  2. Python---HTML表单

    一. http:80 https:443 -------------------------- 二.

  3. C - CJSON

    cJSON   API 说明 cJSON_Version() 获得cJSON的版本 cJSON_InitHooks(); 初始化cJSON_Hooks结构体 cJSON_Parse(); 将字符串解析 ...

  4. Linux之ssh中XSHELL无法连接解决方案

    查漏补缺,理解概念,及时总结,互相交流,欢迎拍砖. 目前遇到的大致有以下几个问题分类: 网络是否连通.防火墙策略.DNS解析问题.端口是否开启.selinux是否开启-- 1.网络连通: 是否在同一网 ...

  5. 针对mdadm的RAID1失效测试

    背景 对软RAID(mdadm)方式进行各个场景失效测试. 一.初始信息 内核版本: root@omv30:~# uname -a Linux omv30 4.18.0-0.bpo.1-amd64 # ...

  6. 安装RHEL7红帽操作系统

    1.单击“开启此虚拟机”启动RHEL 7系统安装. 开启虚拟机 2.通过键盘方向键选择Install Red Hat Enterprise Linux 7.0选项,然后回车,开始安装RHEL7操作系统 ...

  7. 【codeforces 508C】Anya and Ghosts

    [题目链接]:http://codeforces.com/contest/508/problem/C [题意] 每秒钟可以点一根蜡烛; 这根蜡烛会燃烧t秒; 然后会有m只鬼来拜访你; 要求在鬼来拜访你 ...

  8. 使用Eclipse 创建Spring Boot项目

    一.为什么要使用 Spring Boot ? Spring Boot解决的问题 (1) Spring Boot使编码变简单 (2) Spring Boot使配置变简单 (3) Spring Boot使 ...

  9. 洛谷 P1469 找筷子

    题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX ...

  10. nyoj_187_快速查找素数_201312042102

    快速查找素数 时间限制:1000 ms  |           内存限制:65535 KB 难度:3   描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数.   输入 ...