题目背景

在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量。

有一天他醒来后发现自己居然到了联盟的主城暴风城。

在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛。

题目描述

在艾泽拉斯,有 nn 个城市。编号为 1,2,3,\ldots,n1,2,3,…,n。

城市之间有 mm 条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量。

每次经过一个城市,都会被收取一定的过路费(包括起点和终点)。路上并没有收费站。

假设 11 为暴风城,nn 为奥格瑞玛,而他的血量最多为 bb,出发时他的血量是满的。如果他的血量降低至负数,则他就无法到达奥格瑞玛。

歪嘴哦不希望花很多钱,他想知道,在可以到达奥格瑞玛的情况下,他所经过的所有城市中最多的一次收取的费用的最小值是多少。

输入格式

第一行 33 个正整数,n,m,bn,m,b。分别表示有 nn 个城市,mm 条公路,歪嘴哦的血量为 bb。

接下来有 nn 行,每行 11 个正整数,f_ifi​。表示经过城市 ii,需要交费 f_ifi​ 元。

再接下来有 mm 行,每行 33 个正整数,a_i,b_i,c_iai​,bi​,ci​(1\leq a_i,b_i\leq n1≤ai​,bi​≤n)。表示城市 a_iai​ 和城市 b_ibi​ 之间有一条公路,如果从城市 a_iai​ 到城市 b_ibi​,或者从城市 b_ibi​ 到城市 a_iai​,会损失 c_ici​ 的血量。

输出格式

仅一个整数,表示歪嘴哦交费最多的一次的最小值。

如果他无法到达奥格瑞玛,输出 AFK

输入输出样例

输入 #1复制

4 4 8
8
5
6
10
2 1 2
2 4 1
1 3 4
3 4 3

输出 #1复制

10

说明/提示

对于 60\%60% 的数据,满足 n\leq 200n≤200,m\leq 10^4m≤104,b\leq 200b≤200;

对于 100\%100% 的数据,满足 n\leq 10^4n≤104,m\leq 5\times 10^4m≤5×104,b\leq 10^9b≤109;

对于 100\%100% 的数据,满足 c_i\leq 10^9ci​≤109,f_i\leq 10^9fi​≤109,可能有两条边连接着相同的城市。

思路:首先是要求到合理路径上的最大收费的最小值,此时优先想到能否把一个个点相关的边一条条加入,然而显然是行不通的,除非是floyd,但是时间复杂度承受不了。其次应该考虑到是否能使用二分算法,发现可以,就是每次设置好最大收费的上界,然后跑Dijkstra,检测dis[n]是否会大于或者是小于等于歪嘴哦的最大体力值,以此逐渐缩小范围,便可在log(所有体力的最大值)次(不大于10次)Dijkstra后找到答案!!!

#include<bits/stdc++.h>
using namespace std;
//对啊!!就是二分啊!这种不知道选择哪个值的, 优先想一想有没有可能逐步加入遍历,
//不能逐步加入就应该想一想能不能用二分!!
const int maxn=1e4+5;
int arr[maxn],dis[maxn],vis[maxn];
struct edge{int v,w;
};
vector<edge> edg[maxn];
struct node{int dis,u;bool operator>(const node &a)const{return dis>a.dis;}
};
priority_queue<node,vector<node>,greater<node>> q;
void dijkstra(int up,int s=1)
{memset(dis,63,sizeof dis);memset(vis,0,sizeof vis);if(arr[s]>up)return;dis[s]=0;q.push({0,s});while(!q.empty()){int u=q.top().u;q.pop();if(vis[u])continue;vis[u]=1;for(auto ed:edg[u]){int v=ed.v,w=ed.w;if(arr[v]>up)continue;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push({dis[v],v});}}}
}
int main()
{ios_base::sync_with_stdio(false),cin.tie(nullptr);int n,m,b,ma=-1;cin>>n>>m>>b;for(int i=1;i<=n;i++){cin>>arr[i];ma=max(ma,arr[i]);}while(m--){int u,v,w;cin>>u>>v>>w;edg[u].push_back({v,w});edg[v].push_back({u,w});}int l=0,r=ma+1;while(l+1<r){int mid=(r+l)/2;dijkstra(mid);if(dis[n]>b)//不符合,就要扩大mid {l=mid;}else r=mid;}if(r<=ma)cout<<r;else cout<<"AFK";return 0;
}

洛谷P1462 通往奥格瑞玛的道路相关推荐

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

    洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...

  2. 洛谷P1462 通往奥格瑞玛的道路 题解

    洛谷P1462 通往奥格瑞玛的道路 题解 题目链接:P1462 通往奥格瑞玛的道路 题意:在艾泽拉斯,有 nnn 个城市.编号为 1,2,3,-,n1,2,3,\ldots,n1,2,3,-,n . ...

  3. 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 spfa (存多条边示例)

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

  4. 洛谷 P1462 通往奥格瑞玛的道路

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

  5. 洛谷 1462 通往奥格瑞玛的道路

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

  6. [洛谷1462 ]通往奥格瑞玛的道路---二分答案+spfa

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

  7. 洛谷 1462 通往奥格瑞玛的道路 题解

    博客观赏效果更佳 题意简述 nnn个点mmm条边的无向图,点边均有权.给定bbb.请你找到一个从1到n的路使得边权和<=b且点权的最大值最小. 思路 二分+最短路.对于一个mid,把所有点权&l ...

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

    题目链接: https://www.luogu.org/problem/show?pid=1462 题意: 题解: 二分法+最短路判定. 二分经过城市的最大费用w,然后判定:对于每一个费用大于w的城市 ...

  9. 洛谷:P1462 通往奥格瑞玛的道路

    题目连接:P1462 通往奥格瑞玛的道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目要求是假如有多条路线,求出每条路线的最大值然后选出其中的最小值. 一般这种问法都是二分. ...

最新文章

  1. 现代软件工程 作业 团队冲刺阶段的要求
  2. leetcode-728-Self Dividing Numbers
  3. 数据挖掘学习指南!!
  4. 学python最重要的是_Python学习,要选哪个版本?
  5. 电竞+区块链,玩家的4大入局方式
  6. android mysql代码_LitePal——Android数据库框架完整使用手册(示例代码)
  7. python二维列表长度_python如何使二维数组的高度大于长度
  8. IP地址 0.0.0.0 是什么意思?
  9. Android audio切换设备通道流程(二十八)
  10. 计算机专业的大专大学规划,大学生计算机专业职业规划个人简历
  11. xposed修改微信步数
  12. 超定方程组最小二乘matlab,超定方程组最优解(最小二乘解)推导
  13. 黑苹果opencore下HD4400打开百度云等软件出现花屏的解决方案
  14. APP支付宝登录第三方授权如何签约入口在哪里
  15. linux nfs acl 特定ip,Linux NFS配置
  16. 大白菜装机教程win10_详解戴尔电脑一键重装系统win10教程
  17. 拓嘉辰丰电商:拼多多新品适合场景推广还是搜索推广
  18. 论文研读笔记(一)——ALEXnet
  19. 微信小程序获取输入框(input)内容
  20. Kafka动态认证SASL/SCRAM配置+整合springboot配置

热门文章

  1. .NET类比学JAVA之访问SqlServer数据库
  2. 追爱系列电影电视剧书籍
  3. 重磅:CMMI DEV V2.0发布!
  4. 电脑莫名奇妙地出现了嘀嗒壁纸,只有下拉的水滴图标,找不到文件所在位置,怎么删除?
  5. 中国财团买得了 Opera,买不了仙童半导体?
  6. 中级响应代表什么事件_15万预算,能买到合格的中级轿车吗?
  7. 转载:[5GC]5G LAN标准解读
  8. 时事评论---宣誓不欠薪,好一场秀
  9. c语言pow函数精度差,pow()函数结果强制转化为int造成误差的分析
  10. 电脑 | 更新后显示器无法实现夜间模式