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

就一个最短路,并且边长都是1,所以每个点只搜一次。
/**************************************************************
Problem: 3299
User: MT_Chan
Language: C++
Result: Accepted
Time:72 ms
Memory:2420 kb
****************************************************************/ #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define Maxn 310
#define INF 0xfffffff int kx[];
int a[Maxn][Maxn],tr[Maxn*Maxn];
char s[Maxn]; int dis[Maxn*Maxn],st,ed;
int n,m; queue<int > q;
void spfa()
{
while(!q.empty()) q.pop();
memset(dis,-,sizeof(dis));
q.push(st);dis[st]=;
while(!q.empty())
{
int x=q.front();
int nx=(x-)/m+,ny=x-(nx-)*m;
if(ny>&&tr[x-]!=-&&dis[tr[x-]]==-)
{
dis[tr[x-]]=dis[x]+;
if(tr[x-]==ed) break;
q.push(tr[x-]);
}
if(ny<m&&tr[x+]!=-&&dis[tr[x+]]==-)
{
dis[tr[x+]]=dis[x]+;
if(tr[x+]==ed) break;
q.push(tr[x+]);
}
if(nx>&&tr[x-m]!=-&&dis[tr[x-m]]==-)
{
dis[tr[x-m]]=dis[x]+;
if(tr[x-m]==ed) break;
q.push(tr[x-m]);
}
if(nx<n&&tr[x+m]!=-&&dis[tr[x+m]]==-)
{
dis[tr[x+m]]=dis[x]+;
if(tr[x+m]==ed) break;
q.push(tr[x+m]);
}
q.pop();
}
printf("%d\n",dis[ed]);
} int main()
{
scanf("%d%d",&n,&m);
memset(kx,-,sizeof(kx));
memset(tr,,sizeof(tr));
for(int i=;i<=n;i++)
{
scanf("%s",s);
for(int j=;j<m;j++)
{
int now=(i-)*m+j+;
if(s[j]=='@') st=now;
else if(s[j]=='=') ed=now;
else if(s[j]=='#') tr[now]=-;
else if(s[j]>='A'&&s[j]<='Z')
{
int kk=s[j]-'A'+;
if(kx[kk]==-) kx[kk]=now;
else tr[now]=kx[kk],tr[kx[kk]]=now;
}
}
}
for(int i=;i<=n*m;i++) if(tr[i]==) tr[i]=i;
spfa();
return ;
}
【bzoj 3299】 [USACO2011 Open]Corn Maze玉米迷宫(最短路)的更多相关文章
- BZOJ 3299: [USACO2011 Open]Corn Maze玉米迷宫(BFS)
水题一道却交了4次QAQ,真是蒟蒻QAQ CODE: #include<cstdio>#include<iostream>#include<cstring>#inc ...
- 3299: [USACO2011 Open]Corn Maze玉米迷宫
3299: [USACO2011 Open]Corn Maze玉米迷宫 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 137 Solved: 59[ ...
- 【BZOJ】3299: [USACO2011 Open]Corn Maze玉米迷宫(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=3299 映射一下传送门即可.. #include <cstdio> #include &l ...
- bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫
Description 今年秋天,约翰带着奶牛们去玩玉米迷宫.迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行. 迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是 ...
- 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 ...
- 洛谷——P1825 [USACO11OPEN]玉米田迷宫Corn Maze
P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...
- 洛谷—— P1825 [USACO11OPEN]玉米田迷宫Corn Maze
https://www.luogu.org/problem/show?pid=1825 题目描述 This past fall, Farmer John took the cows to visit ...
- 洛谷 P1825 [USACO11OPEN]玉米田迷宫Corn Maze
P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...
- [USACO11OPEN]玉米田迷宫Corn Maze
题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn m ...
随机推荐
- c语言入门经典必背18个程序
1 . /* 输出 9*9 口诀.共 9 行 9 列, i 控制行, j 控制列. */ #include "stdio.h" main() {int i,j,result; fo ...
- 20151222jquery学习笔记--验证注册表单
$(function () { $('#search_button').button({ icons : { primary : 'ui-icon-search', }, }); $('#reg'). ...
- socket的NIO操作
一.前言 Java中直接使用socket进行通信的场景应该不是很多,在公司的一个项目中有这种需求,所以根据自己的理解和相关资料的参考,基于NIO 实现了一组工具类库,具体的协议还未定义,后续再整理 二 ...
- Fibonacci数列的java实现
关于Fibonacci应该都比较熟悉,0,1,1,2,3..... 基本公式为f(n) = f(n-1) + f(n-2); f(0) = 0; f(1) =1; 方法1:可以运用迭代的方法实现: p ...
- C++学习指南
转载于stackoverflow:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list 感谢Ge ...
- Swift小功能点积累
label字符加删除线 let label = UILabel(frame: CGRectMake(, , , )) let attr = NSMutableAttributedString(&quo ...
- ajax跨域访问 webservice
前端代码 $.ajax({ type: "POST", url: "http://localhost:9767/WebService1.asmx/HelloWorld?j ...
- CentOS系统Apache服务器优化详解
1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...
- 文件操作 系统备份和还原,压缩,解压 tar dump/restore
基本操作命令: ls -a 显示指定目录下的目录和文件,包括隐藏的文件和目录 ls -l 将文件和目录详细列出来,包括文件状态,权限,拥有者,文件名,文件大小等 改变工作目录命令 cd cd .. 进 ...
- 项目规范和建立-从frozenui学习
1.分支branches开发新功能,主干trunk是稳定发布的.因为frozenui下载完,看到branches比trunk多了一个版本 2.版本号定义,主版本.次版本.修订号 大版本号: 主版本号: ...