【luogu P2385 青铜莲花池】 题解
2024-10-21 13:08:55
题目链接:https://www.luogu.org/problemnew/show/P2385
莲花池什么的最漂亮啦!
最近刷了两天搜索= =我搜索一直是弱菜
直接套bfs
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n, m, m1, m2, sx, sy, ex, ey;
struct point{
int x, y, t;
}q[];
int ma[][];
int fx[];
int fy[];
void bfs()
{
int tail = ,head = ;
q[head].x = sx, q[head].y = sy, q[head].t = ;
while(head!=tail)
{
for(int i = ; i <= ; i++)
{
int nowx = q[head].x + fx[i];
int nowy = q[head].y + fy[i];
if(nowx == ex && nowy == ey)
{
printf("%d",q[head].t+);
return ;
}
if(nowx > m || nowx <= || nowy > n || nowy <= || ma[nowx][nowy] == ) continue;
ma[nowx][nowy] = ;
q[tail].x = nowx;
q[tail].y = nowy;
q[tail].t = q[head].t + ;
tail++;
}
head++;
} }
int main()
{
memset(ma,,sizeof(ma));
scanf("%d%d%d%d",&m,&n,&m1,&m2);
for(int i = ; i <= m; i++)
for(int j = ; j <= n; j++)
{
scanf("%d",&ma[i][j]);
if(ma[i][j]==)
{
sx = i;
sy = j;
}
if(ma[i][j]==)
{
ex = i;
ey = j;
}
if(ma[i][j] == )
{
ma[i][j] = ;
}
}
fx[] = m1, fx[] = m1, fx[] = -m1, fx[] = -m1, fx[] = m2, fx[] = m2, fx[] = -m2, fx[] = -m2;
fy[] = m2, fy[] = -m2, fy[] = m2, fy[] = -m2, fy[] = m1, fy[] = -m1, fy[] = m1, fy[] = -m1;
bfs();
return ;
}
最新文章
- 1、开篇:公司管理经验谈 - CEO之公司管理经验谈
- 自己动手制作CSharp编译器
- EditText 焦点
- xxx.java: Recompile with -Xlint:deprecation for details
- openStack centos6.4
- 基于visual Studio2013解决C语言竞赛题之1024求和
- JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)
- SpringMVC + Spring 3.2.14 + Hibernate 3.6.10
- python 基础篇第一篇
- CF #335 div1 A. Sorting Railway Cars
- CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data译文
- linux-echo
- 妙谈js回调函数的理解!
- sap 最新财报以及云业务转型情况
- nginx 启动报错403
- 6.26实力测试(小错笑cry)
- [转]SQL Collation冲突解决 临时表
- Html、Asp、Php、Jsp禁止页面缓存
- Laravel学习之旅(二)
- codevs 2577 医院设置