题目

P1462 通往奥格瑞玛的道路

给定\(n\)个点\(m\)条边,每个点上都有点权\(f[i]\),每条边上有边权,找一条道路,使边权和小于给定的数\(b\),并使最大点权最小。

解析

二分一下钱,然后跑最短路,判断一下如果只有这么多钱的话能不能到终点(最短路边权和是不是不超过\(b\)),套个最短路板子,套个二分板子,没了。

代码

//二分+最短路
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int n, m, b, num;
int l, r, mid = INF;
int dis[N], head[N], f[N];
bool vis[N]; class edge {
public :
int v, nx, w;
}e[N]; class node {
public:
int id, dis;
bool operator < (const node &oth) const {
return this->dis > oth.dis;
}
}; template<class T>inline void read(T &x) {
x = 0; int f = 0; char ch = getchar();
while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
x = f ? -x : x;
return;
} inline void add(int u, int v, int w) {
e[++num].nx = head[u], e[num].v = v, e[num].w = w, head[u] = num;
} priority_queue<node>q;
bool dijkstra() {
memset(dis, INF, sizeof dis);
memset(vis, 0, sizeof vis);
dis[1] = 0;
q.push((node){1, 0}) ;
while (!q.empty()) {
node d = q.top(); q.pop();
int u = d.id;
if (vis[u]) continue;
vis[u] = 1;
for (int i = head[u]; ~i; i = e[i].nx) {
int v = e[i].v;
if (dis[u] + e[i].w < dis[v] && f[v] <= mid) {
dis[v] = dis[u] + e[i].w;
q.push((node){v, dis[v]});
}
}
}
return (dis[n] > b);
} int main() {
memset(head, -1, sizeof (head));
read(n), read(m), read(b);
for (int i = 1; i <= n; ++i) read(f[i]), r = max(r, f[i]);
for (int i = 1, x, y, z; i <= m; ++i) {
read(x), read(y), read(z);
add(x, y, z), add(y, x, z);
}
if (dijkstra()) {
printf("AFK\n");
return 0;
}
while (l <= r) {
mid = (l + r) >> 1;
if (dijkstra()) l = mid + 1;
else r = mid - 1;
}
printf("%d\n", l);
return 0;
}

P1462 通往奥格瑞玛的道路 (二分+最短路)的更多相关文章

  1. 洛谷 P1462 通往奥格瑞玛的道路 二分 最短路

    #include<cstdio> #include<queue> #include<cstring> #include<algorithm> using ...

  2. [Luogu P1462] 通往奥格瑞玛的道路 (二分答案+最短路径)

    题面 传送门:https://www.luogu.org/problemnew/show/P1462 Solution 这道题如果去除掉经过城市的收费.那么就是裸的最短路 但是题目要求经过城市中最多的 ...

  3. 洛谷 - P1462 - 通往奥格瑞玛的道路 - 二分 - Dijkstra

    https://www.luogu.org/problem/P1462 感觉,要二分最大收费权的城市,把小于等于它的全部插进去,Dijkstra一下求出最小的血量.这样感觉太暴力了. 考虑只有1000 ...

  4. 洛谷P1462 通往奥格瑞玛的道路 题解 最短路+二分答案

    题目链接:https://www.luogu.com.cn/problem/P1462 题目大意: 有 \(n\) 个点 \(m\) 条边,每个点有一个点权,每个边有一个边权.求所有长度不超过 \(b ...

  5. Luogu P1462 通往奥格瑞玛的道路 二分答案+最短路

    先二分答案,再跑最短路,跑的时候遇到 过路费超过二分的答案的 就不拿他更新最短路 #include<cstdio> #include<iostream> #include< ...

  6. 洛谷P1462通往奥格瑞玛的道路——二分答案最短路

    题目:https://www.luogu.org/problemnew/show/P1462 最大值最小问题,二分答案. 代码如下: #include<iostream> #include ...

  7. 洛谷P1462 通往奥格瑞玛的道路[二分答案 spfa 离散化]

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...

  8. 洛谷 P1462 通往奥格瑞玛的道路——二分+spfa

    上一波链接 https://www.luogu.org/problem/P1462 这道题我们考虑二分答案 然后每次跑一次spfa判断是否能够到达n点 tips:在不考虑负权边的前提下我们写最短路最好 ...

  9. 洛谷P1462 通往奥格瑞玛的道路(二分+spfa,二分+Dijkstra)

    洛谷P1462 通往奥格瑞玛的道路 二分费用. 用血量花费建图,用单源最短路判断 \(1\) 到 \(n\) 的最短路花费是否小于 \(b\) .二分时需要不断记录合法的 \(mid\) 值. 这里建 ...

随机推荐

  1. PostgreSql的Explain命令详解

    http://toplchx.iteye.com/blog/2091860 使用EXPLAIN PostgreSQL为每个收到的查询设计一个查询规划.选择正确的匹配查询结构和数据属性的规划对执行效率是 ...

  2. SpringBoot 2.0 更优雅的配置注入

    application.properties jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:33 ...

  3. 前后端分离密码登陆加密RSA方案(java后端)

    前言:密码加密有很多种方案,这里不做过多讨论,本篇文章是基于RSA加密实现. 首先在前端工程中需要引入加密js: "jsencrypt": "2.3.1",(注 ...

  4. http协议、模块、express框架以及路由器、中间件和mysql模块

    一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式   get.post sta ...

  5. PMP(第六版)十大知识领域、五大项目管理过程组、49个过程矩阵

    今天整理了PMP(第六版)十大知识领域.五大项目管理过程组.49个过程矩阵,分享出来,希望对要考PMP的童鞋有帮助. PS.红字是与第五版的差异 转走请标明出处  https://www.cnblog ...

  6. 【视频】设计模式(Java)视频讲解

    设计模式(JAVA) 视频网址: http://www.qghkt.com/ 设计模式(JAVA)视频地址: https://ke.qq.com/course/318643?tuin=a508ea62 ...

  7. MySQL- 简单操作命令及教程

    MySQL数据库(;表示结束语句) 关系型数据库 注释用 // db_name表示库名: b_name表示表名 1.进入.退出 root用户只能在本机连接,不可外部链接 进入:mysql -uroot ...

  8. AngularJS学习之旅—AngularJS 表单(十六)

    一.AngularJS 表单 AngularJS 表单是输入控件的集合. HTML 控件 以下 HTML input 元素被称为 HTML 控件: input 元素 select 元素 button ...

  9. UI对象库-定位元素与程序分离

    1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的 ...

  10. c文件操作整理

    <c陷阱与缺陷> FILE *fp; fp = fopen(file, "r+"); 编程者也许认为,程序一旦执行上述操作完毕,就可以自由地进行读取和写入的操作了.遗憾 ...