就一个最短路,并且边长都是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玉米迷宫(最短路)的更多相关文章

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

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

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

    3299: [USACO2011 Open]Corn Maze玉米迷宫 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 137  Solved: 59[ ...

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

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

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

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

  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. c语言入门经典必背18个程序

    1 . /* 输出 9*9 口诀.共 9 行 9 列, i 控制行, j 控制列. */ #include "stdio.h" main() {int i,j,result; fo ...

  2. 20151222jquery学习笔记--验证注册表单

    $(function () { $('#search_button').button({ icons : { primary : 'ui-icon-search', }, }); $('#reg'). ...

  3. socket的NIO操作

    一.前言 Java中直接使用socket进行通信的场景应该不是很多,在公司的一个项目中有这种需求,所以根据自己的理解和相关资料的参考,基于NIO 实现了一组工具类库,具体的协议还未定义,后续再整理 二 ...

  4. Fibonacci数列的java实现

    关于Fibonacci应该都比较熟悉,0,1,1,2,3..... 基本公式为f(n) = f(n-1) + f(n-2); f(0) = 0; f(1) =1; 方法1:可以运用迭代的方法实现: p ...

  5. C++学习指南

    转载于stackoverflow:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list 感谢Ge ...

  6. Swift小功能点积累

    label字符加删除线 let label = UILabel(frame: CGRectMake(, , , )) let attr = NSMutableAttributedString(&quo ...

  7. ajax跨域访问 webservice

    前端代码 $.ajax({ type: "POST", url: "http://localhost:9767/WebService1.asmx/HelloWorld?j ...

  8. CentOS系统Apache服务器优化详解

    1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...

  9. 文件操作 系统备份和还原,压缩,解压 tar dump/restore

    基本操作命令: ls -a 显示指定目录下的目录和文件,包括隐藏的文件和目录 ls -l 将文件和目录详细列出来,包括文件状态,权限,拥有者,文件名,文件大小等 改变工作目录命令 cd cd .. 进 ...

  10. 项目规范和建立-从frozenui学习

    1.分支branches开发新功能,主干trunk是稳定发布的.因为frozenui下载完,看到branches比trunk多了一个版本 2.版本号定义,主版本.次版本.修订号 大版本号: 主版本号: ...