【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 ... 
随机推荐
- MySQL INSERT DELAYED
			INSERT DELAYED 语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_nam ... 
- 在虚拟机安装64位系统提示,此主机支持Intel VT-x,但Intel VT-x处于禁用状态
			进入BIOS - Security - Virtualization - Intel (R) Virtualization Technology 将 Disabled 改为 Enabled 即可 
- php测试oracle链接是否成功
			$conn = oci_connect('eoffice', 'hdujiedian', '//192.168.100.21/hziee'); if (!$conn) { $e = oci_error ... 
- 20151210 Jquery 学习笔记 AJAX 进阶
			一.加载请求 在 Ajax 异步发送请求时,遇到网速较慢的情况,就会出现请求时间较长的问题.而超 过一定时间的请求,用户就会变得不再耐烦而关闭页面.而如果在请求期间能给用户一些提 示,比如:正在努力加 ... 
- c语言学习之基础知识点介绍(十二):结构体的介绍
			一.结构体的介绍 /* 语法: struct 结构体名{ 成员列表; }; 切记切记有分号! 说明:成员列表就是指你要保存哪些类型的数据. 注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类 ... 
- HTML标签_Form
			理解HTML是如何跳转到java程序中去的:Form常用HTML标签的作用<body> <form action="servlet/UploadServlet" ... 
- 四、使用Maven和使用Eclipse构建javaWeb项目
			环境前边已经搭建过了,我们就再弄了. 1.使用Maven构建javaWeb项目 (1).键入以下命令: $ mvn archetype:generate -DgroupId=com.holytax.w ... 
- cognos10.2.2使用ODBC连接oracle92数据库(BMT-IMP-0016)
			对于Cognos Server 64位Windows系统,注意!请下载32位程序.即: 因为Cognos只认32位ODBC程序.这里千万要注意.对于64位的Windows系统的ODBC有两个程序, ... 
- asp.net:用类来后台绑定数据源
			//封装成一个 using System;using System.Collections.Generic;using System.Linq;using System.Web;using Syste ... 
- 初尝seajs,只提供自己学习做笔记
			(仅供自己使用,勿喷) 闲着无聊,尝试下seajs, 只是在公司项目上随便添加并测试了一下,做下记录, 方便以后自己使用更快的上手: 下载最新的sea.js, v- 3.0.0 新建seajsConf ... 
