小A和uim之大逃离 II

思路:

  spfa;

代码:

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
struct NodeType
{
int x,y,k;
NodeType(int x_,int y_,int k_):x(x_),y(y_),k(k_){}
NodeType(){}
};
const int dx[]={,-,,,};
const int dy[]={,,,,-};
int n,m,d,r,dis[][][];
char Map[][];
queue<NodeType>que;
bool if_[][][];
int main()
{
scanf("%d%d%d%d",&n,&m,&d,&r);
for(int i=;i<=n;i++) scanf("%s",Map[i]+);
for(int i=;i<=n;i++)
{
for(int v=;v<=m;v++) dis[i][v][]=dis[i][v][]=INF;
}
dis[][][]=;int x,y,k;que.push(NodeType(,,)),if_[][][]=true;
NodeType now;
for(;!que.empty();)
{
now=que.front(),que.pop();
if_[now.x][now.y][now.k]=false,k=now.k;
for(int i=;i<=;i++)
{
x=now.x+dx[i],y=now.y+dy[i];
if(x>&&x<=n&&y>&&y<=m&&Map[x][y]=='.')
{
if(dis[now.x][now.y][k]+<dis[x][y][k])
{
dis[x][y][k]=dis[now.x][now.y][k]+;
if(!if_[x][y][k]) if_[x][y][k]=true,que.push(NodeType(x,y,k));
}
}
}
if(!k)
{
x=now.x+d,y=now.y+r;
if(x>&&x<=n&&y>&&y<=m&&Map[x][y]=='.')
{
dis[x][y][]=dis[now.x][now.y][]+;
if(!if_[x][y][]) if_[x][y][],que.push(NodeType(x,y,));
}
}
}
if(dis[n][m][]==INF&&dis[n][m][]==INF) printf("-1\n");
else printf("%d\n",min(dis[n][m][],dis[n][m][]));
return ;
}

AC日记——小A和uim之大逃离 II 洛谷七月月赛的更多相关文章

  1. 小a和uim之大逃离(洛谷 1373)

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  2. 【洛谷P3818】小A和uim之大逃离 II

    小A和uim之大逃离 II 题目链接 比较裸的搜索,vis[i][j]再加一层[0/1]表示是否使用过魔液 转移时也将是否使用过魔液记录下来,广搜即可 #include<iostream> ...

  3. P3818 小A和uim之大逃离 II(洛谷月赛)

    P3818 小A和uim之大逃离 II 题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然 ...

  4. P3818 小A和uim之大逃离 II(bfs,有条件的广搜)

    题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然一阵南风吹来,一片乌云从南部天边急涌过来 ...

  5. luogu P3818 小A和uim之大逃离 II

    题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然一阵南风吹来,一片乌云从南部天边急涌过来 ...

  6. P3818 小A和uim之大逃离 II

    题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然一阵南风吹来,一片乌云从南部天边急涌过来 ...

  7. 洛古 P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...

  8. 洛谷 P1373 小a和uim之大逃离

    2016-05-30 12:31:59 题目链接: P1373 小a和uim之大逃离 题目大意: 一个N*M的带权矩阵,以任意起点开始向右或者向下走,使得奇数步所得权值和与偶数步所得权值和关于K的余数 ...

  9. 洛谷1373 小a和uim之大逃离

    洛谷1373 小a和uim之大逃离 本题地址:http://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北 ...

随机推荐

  1. python练习1--用户登入

    python版本为python3.51.要求 1)输入用户名密码 2)认证成功后显示欢迎信息 3)输错三次后锁定 2.需求分析 1)用户信息存储在文件中(login/config/user_login ...

  2. Bootstrap 排版 文本

    小一点浅一点(设置文本为父文本大小的 85%)<small> .small 大一点粗一点 行高高一点 .lead 粗  <strong> 斜体 <em> 添加背景色 ...

  3. eclipse/myeclipse添加插件3种方式

    个人比较偏爱links的方式,以下方式eclipse/myeclipse均适合 1.links方式 在eclipse目录先新建links目录,新建一个xx.link(例如:android.link) ...

  4. Hibernate学习(5)- session的get与load方法对比

    1.共同点:get和load都是根据Id单条查询获取对象 org.hibernate.Session.load(Class<User> theClass, Serializable id) ...

  5. 目前最快速的多线程Kmeans算法,java实现

    目前最快速Kmeans算法,并由java实现!面对很大的K值表现依然很好. 代码地址: https://github.com/Jethu1/fastKmeans #1.这是一个由java实现的的,多线 ...

  6. CF745 C 并查集

    并查集由于政府不能连通我们可以先按给出的边建立连通块,再将不含有政府的点全部作为一个连通块,边数为(n-1)*n/2然后 贪心地将该连通块与[含政府的.且包含点数最多的]连通块相连,然后由于新增了一些 ...

  7. React Native 入门笔记一 -- Windows下基本环境配置

    一.准备工作 首先,需要安装nodejs,可以从nodejs官网下载,注意,React Native 要求node版本在4.0或以上:否则会出错,我建议把node版本升到最新版本,防止后面出现各种莫名 ...

  8. JobEngine 基于quartz.net 跨平台作业框架

    github:https://github.com/zzhi/JobEngine 基于quartz.net 的跨平台作业框架 quartz.net(https://github.com/quartzn ...

  9. 【BZOJ】3091: 城市旅行 Link-Cut Tree

    [题意]参考PoPoQQQ. 给定一棵树,每个点有一个点权,提供四种操作: 1.删除两点之间的连边 不存在边则无视 2.在两点之前连接一条边 两点已经联通则无视 3.在两点之间的路径上所有点的点权加上 ...

  10. 【CodeForces】578 C. Weakness and Poorness

    [题目]C. Weakness and Poorness [题意]给定含n个整数的序列ai,定义新序列为ai-x,要使新序列的最大子段和绝对值最小,求实数x.n<=2*10^5. [算法]二分| ...