CF821D

news/2025/3/10 17:15:48/文章来源:https://www.cnblogs.com/incra/p/18763167

Sol

如果两个点相邻,那么边权为 \(1\)

如果两个点能通过一次操作来联通,此时这两个点一定满足 \(x\) 或者 \(y\) 的差小于等于 \(2\)(手摸一下就知道了),此时边权为 \(1\)

其他情况边权就是 \(+\infty\)

直接跑最短路,时间复杂度 \(O(k^2)\)

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define pf push_front
#define desktop "C:\\Users\\incra\\Desktop\\"
#define IOS ios :: sync_with_stdio (false),cin.tie (0),cout.tie (0)
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair <int,int> PII;
const int dx[] = {1,0,-1,0},dy[] = {0,-1,0,1};
template <typename T1,typename T2> bool tomax (T1 &x,T2 y) {if (y > x) return x = y,true;return false;
}
template <typename T1,typename T2> bool tomin (T1 &x,T2 y) {if (y < x) return x = y,true;return false;
}
LL power (LL a,LL b,LL p) {LL ans = 1;while (b) {if (b & 1) ans = ans * a % p;a = a * a % p;b >>= 1;}return ans;
}
int fastio = (IOS,0);
#define endl '\n'
#define puts(s) cout << (s) << endl
const int N = 10010;
int n,m,k;
PII a[N];
int dist[N];
int get_w (int i,int j) {int dx = abs (a[i].x - a[j].x),dy = abs (a[i].y - a[j].y);if (dx + dy == 1) return 0;if (dx <= 2 || dy <= 2) return 1;return 0x3f3f3f3f;
}
void BFS (int s) {memset (dist,0x3f,sizeof (dist));dist[1] = 0;deque <int> q;q.pb (s);while (q.size ()) {int u = q.front ();q.pop_front ();for (int v = 1;v <= k;v++) {if (v == u) continue;int w = get_w (u,v);if (dist[v] > dist[u] + w) {dist[v] = dist[u] + w;if (!w) q.pf (v);else q.pb (v);}}}
}
void mian () {cin >> n >> m >> k;int id = -1;for (int i = 1;i <= k;i++) {int x,y;cin >> x >> y;a[i] = {x,y};if (x == n && y == m) id = i;}if (id == -1) a[++k] = {n + 1,m + 1},id = k;BFS (1);// for (int i = 1;i <= k;i++) {//     for (int j = 1;j <= k;j++) {//         if (get_w (i,j) != 0x3f3f3f3f) cout << i << ' ' << j << ' ' << get_w (i,j) << endl;//     }// }if (dist[id] == 0x3f3f3f3f) puts ("-1");else cout << dist[id] << endl;
}
int main () {int T = 1;// cin >> T;while (T--) mian ();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896877.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录---前端实现水印功能

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣前段时间突然接到一个需求,项目中要实现特定水印功能,不同的用户查看时展示用户特有的水印,这样可以在资源外流的时候追究到责任人。 查找搜集了很多方法,有通过CSS伪元素添加水印的、还可以使用CSS重复背景图片、还有…

IDEA2024破解方法

一、下载链接 IDEA2024.2.3: https://www.jetbrains.com/idea/download/other.html 破解脚本和激活码:https://wwpf.lanzouv.com/iZtCB2q6xmwh 二、运行破解脚本 运行 三、输入激活码 激活码位置:

关于举办2024年全国青少年 人工智能创新实践交流展示活动的通知

首页课程项目工具数据集AI 体验读本活动 注册登录“与AI共创未来” 2024年全国青少年人工智能创新实践活动【主办单位】中国科协青少年科技中心、中国青少年科技教育工作者协会、上海人工智能实验室、江苏省科协 【支持单位】中国公众科学素质促进联合体 【承办单位】各省级科…

SRA数据下载丢失质量值信息

001、SRA数据下载丢失质量值信息 使用的转换命令如下: fastq-dump --gzip --split-files -A sample_name sample_name.lite.1zcat SRR17344673_1.fastq.gz | head -n 4 002、解决方法: a、改用EBI数据库:https://www.ebi.ac.uk/ena/browser/viewb、使用 pfastq-dump 进行转…

浏览器插件使用

具体下载——插件小屋 https://www.chajianxw.com/developer/83894.html 在对应的地方填上指定的 header,可以在请求头查看当前的header是否有 新加坡的地址查看当前头部 有 灰度环境 声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出…

FastAPI 参数别名与自动文档生成完全指南:从基础到高级实战

title: FastAPI 参数别名与自动文档生成完全指南:从基础到高级实战 🚀 date: 2025/3/10 updated: 2025/3/10 author: cmdragon excerpt: 本教程深入探讨 FastAPI 中参数别名与自动文档生成的核心机制,涵盖从基础操作到高级用法。通过详细的代码示例、课后测验和常见错误解…

004TypeScript开发实战

项目搭建规范 一、代码规范 1.1集成editorconfig配置 EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。 # http://editorconfig.org root = true [*] # 表示所有文件适用 charset = utf-8 # 设置文件字符集为 utf-8 indent_style = spac…

Android开发handler源码再次解读记录

源代码解读开启线程HandlerThread首先是run方法跑起来,run方法里主要做两件事情,一个是创建Looper,一个是循环Looperpublic class HandlerThread extends Thread {@Overridepublic void run() {Looper.prepare(); //创建LoopermLooper = Looper.myLooper(); // 然后获取Lo…

方法的声明和调用

方法:静态方法和实例方法,静态方法和类名绑定,实例方法可以进行实例化调用 方法属于类成员,不能独立与之外,在声明的时候必须在类里面进行方法的声明 方法的声明和调用:方法调用的格式与方法声明时的格式必须相同, 构造器:

自动化解决CertJava安全编码在网络安全开发中的应用

CERT是指软件工程研究所(Software Engineering Institute)发布的Java安全编码标准,主要目的是帮助开发者避免常见的安全漏洞,从而推出 CERT Java Coding Standard(JAVA安全编码标准)。​ 近十年来,在计算机系统中考虑安全性已经是一个严肃的问题。过去十年的网络的爆炸性…

【DeepSeek+dify+Ollama打造私有化RAG 01】

本地部署DeepSeek-RI打造自己的私有知识库 一、本地部署需要借助Ollama,Ollama是一个开源框架,专为在本地机器上便捷部署和运行大模型语言模型LLLM而设计 官网:https://ollama.com/ 1、安装ollama 官网下载后,直接就可以进行安装,安装后再终端输入:olllama2、 本地部署Dee…

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

一定不要错过这场精彩的线上用户交流会!在这里,你将有机会深入了解网易邮箱关于Apache DolphinScheduler平台的实际应用案例,汲取大厂的前沿实践经验。你是否对大数据领域的前沿应用充满好奇?网易邮箱作为互联网大厂网易的重要业务线,在大数据应用方面有着诸多值得借鉴的实…