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迷宫类水题了,但是这个比较神奇一点。。。其实就是多个传动点之间的瞬间传送,别的没了。。

 const dd:array[..,..] of longint=((,),(-,),(,-),(,));
var
i,j,k,l,m,n,x0,y0,x1,y1,x,y,f,r:longint;
a,b:array[..,..] of longint;
tr:array[..,..] of longint;
d:array[..,..] of longint;
ch:char;
procedure trans(z:longint;var x,y:longint);
begin
if (z<) or (z>) then exit;
if (tr[z,]=x) and (tr[z,]=y) then
begin
x:=tr[z,];y:=tr[z,];
end
else if (tr[z,]=x) and (tr[z,]=y) then
begin
x:=tr[z,];y:=tr[z,];
end;
end;
begin
readln(n,m);
fillchar(a,sizeof(a),-);
fillchar(tr,sizeof(tr),);
for i:= to n do
begin
for j:= to m do
begin
read(ch);
case upcase(ch) of
'#':a[i,j]:=;
'.':a[i,j]:=;
'=':begin
x1:=i;y1:=j;
a[i,j]:=;
end;
'@':begin
x0:=i;y0:=j;
a[i,j]:=;
end;
'A'..'Z':begin
a[i,j]:=ord(ch)-;
if tr[a[i,j],]= then
begin
tr[a[i,j],]:=i;
tr[a[i,j],]:=j;
end
else
begin
tr[a[i,j],]:=i;
tr[a[i,j],]:=j;
end;
end;
end;
end;
readln;
end;
f:=;r:=;d[,]:=x0;d[,]:=y0;b[x0,y0]:=;
while f<r do
begin
for i:= to do
begin
x:=d[f,]+dd[i,];
y:=d[f,]+dd[i,];
if (x<) or (x>n) or (y<) or (y>m) then continue;
if abs(a[x,y])= then continue;
trans(a[x,y],x,y);
if b[x,y]= then
begin
b[x,y]:=b[d[f,],d[f,]]+;
d[r,]:=x;d[r,]:=y;
if (x=x1) and (y=y1) then
begin
writeln(b[x,y]-);
halt;
end;
inc(r);
end;
end;
inc(f);
end;
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. centos下修改hostname,ip,netmask,gateway,dns

    http://itlab.idcquan.com/linux/set/917191.html http://jingyan.baidu.com/article/e4d08ffdd417660fd3f6 ...

  2. EXP/IMP 命令参数

    http://www.cnblogs.com/sopost/archive/2010/01/19/2190125.html 1.EXP:            1.完全:          EXP  ...

  3. jdbc数据连接池dbcp要导入的jar包

    jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

  4. 关于ClassLoader

    http://blog.csdn.net/zztp01/article/details/6409355 http://blog.sina.com.cn/s/blog_6ec6be0e01011xof. ...

  5. Windows 10 IoT Core环境配置中的那些坑

    我使用的设备是Raspberry Pi 3B,想来国内的嵌入式玩具应该还是树莓派最常见吧.这段时间一直在捣鼓Win10 IoT,结果发现,从安装一直到编码调试一路下来全都是坑.写这篇东西一个是为了备忘 ...

  6. SpringMVC通过实体类返回json格式的字符串,并在前端显示

    一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,. ...

  7. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  8. 自己动手系列——实现一个简单的ArrayList

    ArrayList是Java集合框架中一个经典的实现类.他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小.处于练手的目的,实现一个简单的ArrayList,并且把实现 ...

  9. C++编程练习(16)----“排序算法 之 快速排序“

    快速排序 基本思想: 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的. 算法介绍: 设要排序的 ...

  10. redis集群原理

    redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了.   官方的一个简单测试: 测试完成了50个并发执行100000个请求. 设置和获取的值是一个256字节字符串 ...