【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 ...
随机推荐
- sql 游标循环遍历
写存储过程的时候碰到一个需要对数据进行遍历循环操作的问题,最后通过游标解决了,感觉很适用. declare @level varchar() declare @uid varchar() declar ...
- WCF学习系列二_使用IIS发布WCF服务
原创作者:灰灰虫的家http://hi.baidu.com/grayworm 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们使用VS2008自带的WCFSVCHost(WCF服务主机)发 ...
- 那天有个小孩跟我说LINQ(二)转载
1 LINQ TO Objects续(代码下载) 新建项目 linq_Ch2控制台程序,新建一个Entity文件夹 1.1 学生成绩查询(练习Join) 有三张表如下 ...
- ios Objective-C的动态特性
这是一篇译文,原文在此,上一篇文章就是受这篇文章启发,这次干脆都翻译过来. 过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语 ...
- editActionsForRowAtIndexPath(iOS8) tableview编辑(删除、插入、移动)
ios8 出来的左滑小菜单 可以自定义想要的按钮 (要求ios8以上) - (nullable NSArray<UITableViewRowAction *> *)tableView:(U ...
- c常用字符串函数
获取字符串长度 : size_t strlen(const char *str); 字符串拷贝函数: 把src中内容拷贝到dest中,它会覆盖原来的内容,它会把src中的\0,没有覆盖内容不变 如果s ...
- hpple 简单使用
最近项目使用到hpple,简单说一下使用方式,做做笔记 let responseData = response as! NSData let utf8Html = responseData.strin ...
- Java教程——CMD手动编译运行失败原因(高手略过)
(仅对新手,高手略过)在学习Java初期,我们在利用cmd手动编译java程序的时候,会遇到编译成功,但运行却总是提示失败.已经排除了java配置环境的问题,Path和ClassPath以及%JAVA ...
- 关于SringMvc的参数的传递
* @RequestMapping这个注解代表要请求的方法 * value值表示请求的 方法名*********@RequestParam(value="username")代表请 ...
- Spring学习之代理
Spring的核心就是IOC和AOP IOC就是控制反转: 就是用配置文件的方式给javabean 赋值. 正常的在程序里;用new 的方式创建一个对象的时候,他就固定了值, 如果是注入的方式的话 ...