P4554 小明的游戏
SPFA板子题
#include <stdio.h>
#include <string.h>
#define Clean(X,K) memset(X,K,sizeof(X))
#define re register
#define GC getchar()
#define Jud(X,Y) (X<0||X>=N||Y<0||Y>=M)
int Qread () {
int X = 0 ; char C = GC ;
while (C > '9' || C < '0') C = GC ;
while (C >='0' && C <='9') {
X = X * 10 + C - '0' ;
C = GC ;
}
return X ;
}
const int Maxn = 505 ,INF = 20021020 << 2 , U = 500 * 500 + 5;
int N , M , Mdis[Maxn][Maxn] , Vis[Maxn][Maxn] , Qx[Maxn * Maxn] , Qy[Maxn * Maxn] , Head , Tail ;
const short int Dx[] = {-1,1,0,0} , Dy[] = {0,0,-1,1} ;
char A[Maxn][Maxn] ;
int SPFA (int Sx , int Sy , int Ex , int Ey) {
Clean (Mdis , 0x3f) , Clean(Vis , 0) , Head = Tail = 1 ;
Mdis[Sx][Sy] = 0 , Vis[Sx][Sy] = 1 ;
if (++ Tail > U) Tail = 0 ;
Qx[Tail] = Sx , Qy[Tail] = Sy ;
while (Head != Tail) {
if (++ Head > U) Head = 0 ;
int Nx = Qx[Head] , Ny = Qy[Head] ;
Vis[Nx][Ny] = 0 ;
for (re int i = 0 ; i < 4 ; ++ i) {
int Tx = Nx + Dx[i] , Ty = Ny + Dy[i] ;
if (Jud(Tx , Ty)) continue ;
int Dis = Mdis[Nx][Ny] + (A[Tx][Ty] == A[Nx][Ny] ? 0 : 1) ;
if (Dis < Mdis[Tx][Ty]) {
Mdis[Tx][Ty] = Dis ;
if (!Vis[Tx][Ty]) {
Vis[Tx][Ty] = 1 ;
if (++ Tail > U) Tail = 0 ;
Qx[Tail] = Tx , Qy[Tail] = Ty ;
}
}
}
}
return Mdis[Ex][Ey] ;
}
int main () {
// freopen ("P4554.in" , "r" , stdin) ;
N = Qread () , M = Qread () ;
while (N + M) {
for (re int i = 0 ; i < N; ++ i) for (re int j = 0 ; j < M; ++ j) {
char C = GC ;
while (C != '#' && C != '@') C = GC ;
A[i][j] = C ;
}
int Sx = Qread () , Sy = Qread () , Ex = Qread () , Ey = Qread ();
printf ("%d\n" , SPFA (Sx , Sy , Ex , Ey)) ;
N = Qread () , M = Qread () ;
}
fclose (stdin) , fclose (stdout) ;
return 0 ;
}
P4554 小明的游戏的更多相关文章
- P4554 小明的游戏 (洛谷) 双端队列BFS
最近没有更新博客,全是因为英语,英语太难了QWQ 洛谷春令营的作业我也不会(我是弱鸡),随机跳了2个题,难度不高,还是讲讲吧,学学新算法也好(可以拿来水博客) 第一题就是这个小明的游戏 小明最近喜欢玩 ...
- BZOJ2464: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 280 Solved: 124[Submit][Statu ...
- 最短路【bzoj2464】: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...
- bzoj2464: 中山市选[2009]小明的游戏(最短路)
2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...
- bzoj2464 小明的游戏
Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格.如果移动 ...
- AC日记——中山市选[2009]小明的游戏 bzoj 2464
2464 思路: 最短路: 代码: #include <cstdio> #include <cstring> #include <iostream> #includ ...
- 【bzoj2464】中山市选[2009]小明的游戏
直接转换成最短路 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstr ...
- [小明打联盟][斜率/单调队列 优化dp][背包]
链接:https://ac.nowcoder.com/acm/problem/14553来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放时 ...
- HDU 4828 小明系列故事——捉迷藏
漂亮妹子点击就送:http://acm.hdu.edu.cn/showproblem.php?pid=4528 Time Limit: 500/200 MS (Java/Others) Memo ...
随机推荐
- linux文本处理三剑客的学习
linux下有三个文本处理的神器.分别是grep,sed,awk.功能都是比较强大的. grep帮助: http://my-study-grep.readthedocs.io/en/latest/ s ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增“行政区域管理”,同时大批量树采用异步加载
行政区划:简称政区,是国家为了进行分级管理而实行的区域划分.中国现行的行政区划实行如下原则:1.全国分为省.自治区.直辖市:2.省.自治区分为自治州.县.自治县.市:3.自治州分为县.自治县.市:4. ...
- python常用脚本以及问题跟踪
1.时间操作//获取当前时间 格式是%Y-%m-%d %H:%M:%ScurrTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time. ...
- [二十五]JavaIO之RandomAccessFile
功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutpu ...
- 【Axios】前端页面使用axios调用后台接口
项目基本情况 前端项目是用vue.js做的,前端起的服务URL:http://localhost:8080/ 后端项目是用Node.js做的,后端起的服务URL:http://localhost:30 ...
- demo_3
## 控制器层 需求分析: 访问路径:`/user/reg.do`请求参数:`username=xx&password=xx&&phone=xx&email=xx`请求 ...
- css——rgba()和opacity的区别
(学习笔记) 首先他们都能实现透明效果,不同的是作用对象. rgba()是css中设置背景颜色中的一个属性.而opacity是css的一个属性,也就是rgba()的作用对象是元素的背景颜色或元素的颜色 ...
- js获取地址栏传参
地址:http://127.0.0.1:8082/prosperleedir/index.html?id=6666&name=prosper#prosper Location{ ...
- WebView断网提示
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/9913968.html 重写WebViewClient中的方法,然后WebView.setWebViewC ...
- 使用synchronized的几种场景
1.修饰一个方法synchronized 修饰一个方法很简单,就是在方法的前面加synchronized,例如: public synchronized void method() { // todo ...