原题传送门

题意

 个点的图,任意一点  到可去另外一点  必须互质,即   。

图无边权,但是拥有点权。求到终点  的最短距离。

思路

此题需使用  算法求最短路。最后要求  到  的最短路径,如果直接暴力算最短路,肯定   ,怎么办呢?

考虑每次压入优先队列时,带上当前体力值,这样,就可以记录上次的最短距离。

性质

  •  算法的运算特征:由当前最小值向连着的点拓展。
  • 此图的特性:没有边权,只有从一点到走廊(边)上才会耗费体力值。

由此即可得:当第一次对终点  进行松弛操作时的值就是答案

因为对于边有权值的图 在我们用点  对终点  松弛之后 另外的一个点  对  进行松弛的结果可能更小.

code

#include<bits/stdc++.h>
#define k pair <int, int>//宏定义
using namespace std;
const int N = 4.5e3+10;
static inline int read () {//快读 int x = 0;bool f = 1; char s = getchar();while(s<'0'||s>'9'){if(s=='-')f=0;s=getchar();}while(s>='0'&&s<='9'){x=(x<<1)+(x<<3)+(s^48);s=getchar();}return f?x:-x;
}
//inline:内联函数
int T, n, a[N], h[N*N], cnt;//注意:一定是N*N!!!
struct edge {int to, next;} e[N*N];static inline void add(int x,int y){//链式前向星存图e[++cnt].to = y;e[cnt].next = h[x];h[x] = cnt;
}bool vis[N];int dis[N];
priority_queue<k,vector<k>,greater<k> >q;//优先队列 pair型 static inline void dijkstra(int s, int en){//求最短路 memset(dis, 0x3f, sizeof dis);memset(vis, 0, sizeof vis);priority_queue<k,vector<k>,greater<k> >().swap(q);//清零 且清空内存 dis[s] = 0;q.push(make_pair(dis[s]+a[s], s));//first:最小值 second:编号 while(q.size()){pair<int,int> u = q.top(); q.pop();int x = u.first, y = u.second;vis[y] = 1;for(int i = h[y]; i; i = e[i].next) {int v = e[i].to;if (vis[v]) continue;//松弛处理 if (dis[v] > dis[y]+a[y]){//从点到边耗费体力 dis[v] = x;//上次的值 if (v == en){printf("%d\n",dis[v]);return ;} q.push(make_pair(dis[v]+a[v], v));}}} puts("-1\n");//到不了 输出 -1 return ;
}signed main(void){T=read();n=read();for(int i = 2; i < n; ++ i)for(int j = i+1; j <= n; ++ j)if(__gcd(i, j) == 1){//判断互质 ,最大公因数为 1 add(i, j);add(j, i);//无向图 }while (T --) {int x = read(), y = read();for(int i = 1; i <= n; ++ i) a[i] = read();dijkstra(x, y);//记得用快读,开 O2 }return 0;
}

Luogu P5037 抓捕相关推荐

  1. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  2. [Luogu] 选学霸

    https://www.luogu.org/problemnew/show/P2170 并查集+DP #include <iostream> #include <cstring> ...

  3. Luogu 2470 [SCOI2007]压缩

    和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是 ...

  4. 【Luogu】P1613 跑路

    [Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...

  5. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

  6. Luogu P3177 [HAOI2015] 树上染色(树上背包)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P3177 [HAOI2015] 树上染色 有一棵点数为 NNN 的树,树边有边权.给你一 ...

  7. Luogu P4178 Tree (点分治 + 树状数组)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P4178 Prob ...

  8. Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理,子集反演)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理) Problem n≤1 ...

  9. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P1829 [国家集训队]Crash的数字表格 / JZPTAB(反演,经典好题) Problem S ...

最新文章

  1. 索尼游戏手柄SP2的开发体会
  2. unity判断鼠标移动方向_【反向元气骑士】用unity实现俯视角射击是一种怎样的体验...
  3. QList 列表指针的操作 释放
  4. 程序控制发送文件到邮箱_Kindle电子邮箱推送
  5. Struts2学习总结(完整版)
  6. C++ 引用和指针有什么区别?
  7. 我要学ASP.NET MVC 3.0(十六): MVC 3.0 实例系列之表格数据的分页
  8. 【OCR技术系列之五】自然场景文本检测技术综述(CTPN, SegLink, EAST)
  9. AUTOCAD——文本标注
  10. 阿里AI天池大赛-贷款违约预测-基于CatBoost十折交叉验证
  11. numpy缩放图片/调整图片大小
  12. 13. 如何打破白天开会、晚上加班的节奏
  13. win7下安装MySQL的步骤
  14. 相对定位(relative)和绝对定位(absolute)的区别
  15. 【面试心得】郑州卓见软件科技
  16. linux下开启rpcbind服务
  17. python爬取2345天气网上2011年-2018年历史天气
  18. Maya角色手指动作约束方案
  19. 你会的还只有初级安卓工程师的技术吗?论程序员成长的正确姿势
  20. Trucksim+Prescan+Simulink联合仿真笔记(Carsim同理)

热门文章

  1. Java与模式学习笔记 —— 桥梁(Bridge)模式
  2. 聚合二维码生成(小程序二维码、付款码)
  3. CPU综合设计实验报告
  4. Html中的边框弧边,CSS边框属性一---border-radius
  5. 2020年有寓意的领证日期_2020年有寓意的领证日期
  6. 【面试通关篇】NLP面经集结 | 达摩院、腾讯、微软、美团、百度
  7. oracle exp导出工具,Oracle EXP/IMP 导出导入工具的使用
  8. 算法笔记知识点整理大全
  9. 细数一对一社交源码调和延时卡顿问题的小技巧
  10. 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模