3299: [USACO2011 Open]Corn Maze玉米迷宫

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 137  Solved: 59
[Submit][Status][Discuss]

Description

今年秋天,约翰带着奶牛们去玩玉米迷宫。迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行。 
迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是出口。 
在这个迷宫里,有一些神奇的传送点6每个传送点由一对点组成,一旦 走入传送点的某个结点, 
机器就会强制把你送到传送点的另一头去。所有的传送点都是双向 的,如果你定到了另一头,机器也会把你送回来。

奶牛在一个单位的时间内只能向相邻的四个方向移动一格,不过传送机传送是瞬间完成 的。 
现在W西在迷宫里迷路了,她只知道目前的位罝在哪里,请你帮助她用最短的时间走出 迷宫吧。

Input

第一行:两个用空格分开的整数:N和M,2 
第二行到N+1行:第i+1行有M个连续的字符,描述了迷宫第i行的信息。其中"#"代 表不能通行的玉米地, 
"."代表可以通行的草地,"@"代表贝西的起始位罝,"="代表迷宫出口, 
大写字母“A”到“Z”总是成对出现的,代表一对传送点

Output

第一行:一个整数,表示贝西走出迷宫的最短时间,保证逃离迷宮的路线一定存在

Sample Input

5 6
###=##
#.W.##
#.####
#.@W##
######

Sample Output

3

HINT

从起点向右走,通过w传送,再从另一端 走出迷宫

Source

Silver

题解:做过无数道BFS迷宫类水题了,但是这个比较神奇一点。。。其实就是多个传动点之间的瞬间传送,别的没了。。

  1. const dd:array[..,..] of longint=((,),(-,),(,-),(,));
  2. var
  3. i,j,k,l,m,n,x0,y0,x1,y1,x,y,f,r:longint;
  4. a,b:array[..,..] of longint;
  5. tr:array[..,..] of longint;
  6. d:array[..,..] of longint;
  7. ch:char;
  8. procedure trans(z:longint;var x,y:longint);
  9. begin
  10. if (z<) or (z>) then exit;
  11. if (tr[z,]=x) and (tr[z,]=y) then
  12. begin
  13. x:=tr[z,];y:=tr[z,];
  14. end
  15. else if (tr[z,]=x) and (tr[z,]=y) then
  16. begin
  17. x:=tr[z,];y:=tr[z,];
  18. end;
  19. end;
  20. begin
  21. readln(n,m);
  22. fillchar(a,sizeof(a),-);
  23. fillchar(tr,sizeof(tr),);
  24. for i:= to n do
  25. begin
  26. for j:= to m do
  27. begin
  28. read(ch);
  29. case upcase(ch) of
  30. '#':a[i,j]:=;
  31. '.':a[i,j]:=;
  32. '=':begin
  33. x1:=i;y1:=j;
  34. a[i,j]:=;
  35. end;
  36. '@':begin
  37. x0:=i;y0:=j;
  38. a[i,j]:=;
  39. end;
  40. 'A'..'Z':begin
  41. a[i,j]:=ord(ch)-;
  42. if tr[a[i,j],]= then
  43. begin
  44. tr[a[i,j],]:=i;
  45. tr[a[i,j],]:=j;
  46. end
  47. else
  48. begin
  49. tr[a[i,j],]:=i;
  50. tr[a[i,j],]:=j;
  51. end;
  52. end;
  53. end;
  54. end;
  55. readln;
  56. end;
  57. f:=;r:=;d[,]:=x0;d[,]:=y0;b[x0,y0]:=;
  58. while f<r do
  59. begin
  60. for i:= to do
  61. begin
  62. x:=d[f,]+dd[i,];
  63. y:=d[f,]+dd[i,];
  64. if (x<) or (x>n) or (y<) or (y>m) then continue;
  65. if abs(a[x,y])= then continue;
  66. trans(a[x,y],x,y);
  67. if b[x,y]= then
  68. begin
  69. b[x,y]:=b[d[f,],d[f,]]+;
  70. d[r,]:=x;d[r,]:=y;
  71. if (x=x1) and (y=y1) then
  72. begin
  73. writeln(b[x,y]-);
  74. halt;
  75. end;
  76. inc(r);
  77. end;
  78. end;
  79. inc(f);
  80. end;
  81. end.

3299: [USACO2011 Open]Corn Maze玉米迷宫的更多相关文章

  1. 【BZOJ】3299: [USACO2011 Open]Corn Maze玉米迷宫(bfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3299 映射一下传送门即可.. #include <cstdio> #include &l ...

  2. BZOJ 3299: [USACO2011 Open]Corn Maze玉米迷宫(BFS)

    水题一道却交了4次QAQ,真是蒟蒻QAQ CODE: #include<cstdio>#include<iostream>#include<cstring>#inc ...

  3. bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫

    Description 今年秋天,约翰带着奶牛们去玩玉米迷宫.迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行.  迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是 ...

  4. 【bzoj 3299】 [USACO2011 Open]Corn Maze玉米迷宫(最短路)

    就一个最短路,并且边长都是1,所以每个点只搜一次. /************************************************************** Problem: 3 ...

  5. P1825 [USACO11OPEN]玉米田迷宫Corn Maze

    题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn m ...

  6. 洛谷——P1825 [USACO11OPEN]玉米田迷宫Corn Maze

    P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...

  7. 洛谷—— P1825 [USACO11OPEN]玉米田迷宫Corn Maze

    https://www.luogu.org/problem/show?pid=1825 题目描述 This past fall, Farmer John took the cows to visit ...

  8. 洛谷 P1825 [USACO11OPEN]玉米田迷宫Corn Maze

    P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...

  9. [USACO11OPEN]玉米田迷宫Corn Maze

    题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn m ...

随机推荐

  1. jQuery 动画的执行

    jQuery 动画的执行 <%@ page language="java" import="java.util.*" pageEncoding=" ...

  2. Pomelo的Protobuf

    pomelo的protobuf实现,借助了javascript的动态性,使得应用程序可以在运行时解析proto文件,不需要进行proto文件的编译.pomelo的实现中,为了更方便地解析proto文件 ...

  3. python 安装与pip安装

    在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装, ...

  4. js冒泡排序及计算其运行时间

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. GreenDao 3.2.0 的基本使用

    前言 Android开发中我们或多或少都会接触到数据库.Android中提供了一个占用内存极小的关系型数据库-SQLite.虽然Android系统中提供了许多操作SQLite的API,但是我们还是需要 ...

  6. es6笔记5^_^set、map、iterator

    一.set 1.基本用法 数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值. let s = new Set(); [2,3,5,4,5,2,2].map(x => s.add(x ...

  7. 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN

    在 /home/your_name/TensorFlow/DCGAN/ 下新建文件 train.py,同时新建文件夹 logs 和文件夹 samples,前者用来保存训练过程中的日志和模型,后者用来保 ...

  8. AngularJs中ng-controller下的函数在调用时为什么会执行两次?

    最近在学习AngularJs的过程中,自己做了个demo,但程序运行后却发现有个地方运行不对劲,纠结了半天,也问了,也查了,但是没有一个满意的答案,所以特地贴出来,请教各位大神(先说声谢谢了!).为了 ...

  9. XmlHepler(拿去就能用)

    [系列目录](./XmlCatalog.html) 前言 本篇是这个系列的最后一篇.也是本人第一次写系列文章,虽然系列中大部分内容都是参考网络,但是自己都有敲代码验证.自己再编写过程中也学习到了很多知 ...

  10. 细说Asp.Net WebAPI消息处理管道

    我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓S ...