当前位置: 首页 > news >正文

牛客 松鼠回家(二分答案+最短路)

题目描述

松鼠宝宝由于贪玩去了一个具有n个点和m条边的无向图中,现在松鼠宝宝仅有h点体力,所有的边经过一次后会消耗部分体力,同时松鼠爸爸为了惩罚贪玩的松鼠宝宝,每到一个点会扣除部分松果(起点的松果也会扣除)。现松鼠宝宝向你求助,询问在能到达家的情况下

        尽可能让路径上扣除松果的数量最大的那个点扣除的数量尽可能小。

输入描述:

第一行读入五个数n,m,st,ed, h(分别无向图的点数,边数,起点位置,家的位置,开始时候的体力)

接下来一行读入n个数ai(每个点所扣除的松果数量)

接下来m行读入x,y,z(分别代表无向边的两点和路上所消耗的体力)

1<=n <=1e4 

1<=m<= 2e4

1<=ai,z, h <= 1e7  

1 <= x,y <= n

输出描述:

输出一行代表最大扣除数量的最小值,若无法到达,则输出-1

示例1

输入

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

输出

10

学习学长用bfs来写最短路

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int M=4e4+10;
const int N=1e4+10;
const int INF=0x3f3f3f3f;
int minn=0x3f3f3f3f;
int maxn=0xc0c0c0c0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
bool st[N];
ll val[N];
ll dist[N];
vector<PII> v[N];
ll n,m,s,e,k,h,mx;
bool check(ll x)
{queue<ll> q;q.push(s);for(int i=1;i<=n;i++) dist[i]=INF,st[i]=false;dist[s]=0;while(q.size()){ll u=q.front();q.pop();st[u]=false;for(int i=0;i<v[u].size();i++){ll j=v[u][i].first;ll w=v[u][i].second;if(val[j]>x) continue;if(dist[j]>dist[u]+w){dist[j]=dist[u]+w;if(!st[j]){st[j]=true;q.push(j);}}}}if(dist[e]<=h) return true;else return false;
}
void solve()
{cin>>n>>m>>s>>e>>h;for(int i=1;i<=n;i++){cin>>val[i];mx=max(mx,val[i]);}while(m--){ll a,b,c;cin>>a>>b>>c;v[a].push_back({b,c});v[b].push_back({a,c});}ll l=0,r=mx;ll mid;while(l<r){mid=l+r>>1;if(check(mid))r=mid;else l=mid+1;}if(check(l))cout<<l<<endl;elsecout<<-1<<endl;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll t=1;
//	cin>>t;while(t--){	solve();}return 0;
}

http://www.lryc.cn/news/122190.html

相关文章:

  • Mysql in 查询的奇怪方向
  • ORB-SLAM2第二节---双目地图初始化
  • 后端常使用的中间件知识点--持续更新
  • 非科班的大家如何顺滑转码
  • webpack中常见的Loader
  • RabbitMQ:可靠消息传递的强大消息中间件
  • python 批量下载m3u8的视频
  • 最后一击
  • K8S资源管理方式
  • 第三章 图论 No.9有向图的强连通与半连通分量
  • 回归预测 | MATLAB实现基于PSO-LSSVM-Adaboost粒子群算法优化最小二乘支持向量机结合AdaBoost多输入单输出回归预测
  • Mysql 和Oracle的区别
  • 在收藏夹里“积灰”的好东西——“收藏从未停止,行动从未开始”
  • 【算法|数组】双指针
  • asp.net core6 webapi 使用反射批量注入接口层和实现接口层的接口的类到ioc中
  • 【2023】字节跳动 10 日心动计划——第九关
  • 小龟带你敲排序之冒泡排序
  • Nacos AP架构集群搭建(Windows)
  • nodejs+vue+elementui,图书评论管理系统_g9e3a
  • 基于TorchViz详解计算图(附代码)
  • 解决GitHub的速度很慢的几种方式
  • 设计模式再探——策略模式
  • 基于Googlenet深度学习网络的人员行为动作识别matlab仿真
  • 存储过程的学习
  • zookeeperAPI操作与写数据原理
  • 防火墙对双通道协议的处理
  • vscode搭建c语言环境问题
  • 全网最全的接口自动化测试教程
  • 数据结构----结构--线性结构--链式存储--链表
  • 【5G 核心网】5G 多PDU会话锚点技术介绍