首页 > 其他分享 >单源最短路

单源最短路

时间:2024-07-09 19:01:04浏览次数:5  
标签:10 短路 单源 leq que 阶段 ll make

ABC340D Super Takahashi Bros.

问题描述
高桥正在玩一个游戏。
这个游戏由编号为\(1, 2, \ldots, N\)的\(N\)个阶段组成。最初,只有阶段\(1\)是可以玩的。
对于每个可以玩的阶段\(i\)(其中\(1 \leq i \leq N-1\)),在阶段\(i\)你可以执行以下两个动作之一:

  1. 花费\(A_i\)秒来通过阶段\(i\)。这允许你进入并玩阶段\(i+1\)。
  2. 花费\(B_i\)秒来通过阶段\(i\)。这允许你进入并玩阶段\(X_i\),其中\(X_i\)是另一个阶段,满足\(1 \leq X_i \leq N\)。
    忽略除了通过阶段所需时间之外的所有时间,最少需要多少秒才能玩到阶段\(N\)?

约束条件

  • \(2 \leq N \leq 2 \times 10^5\)
  • \(1 \leq A_i, B_i \leq 10^9\)
  • \(1 \leq X_i \leq N\)
  • 所有输入值都是整数。
#include<bits/stdc++.h>
#define pt printf(">>>")
#define mid (((l)+(r))/2)
using namespace std;
typedef long long ll;
const ll N=1e6+10,inf=1e18+10,mod=1e9+7;
ll n;
vector<pair<ll,ll> > G[N];
ll d[N],vis[N];
void dijkstra(){
	priority_queue<pair<ll,ll>,vector<pair<ll,ll> >,greater<pair<ll,ll> > > que;
	fill(d,d+1+n,inf);
	que.push(make_pair(d[1]=0,1));
	while(que.size()){
		ll u=que.top().second;que.pop();
		if(vis[u])continue;
		vis[u]=true;
		for(auto e:G[u]){
			ll v=e.first,w=e.second;
			if(d[v]>d[u]+w)d[v]=d[u]+w,que.push(make_pair(d[v],v));
		}
	}
}
int main(){
	cin >> n;
	for(ll i=1;i<=n-1;i++){
		ll a,b,x;
		cin >> a >> b >> x;
		G[i].push_back(make_pair(i+1,a));
		G[i].push_back(make_pair(x,b));
	}
	dijkstra();
	cout << d[n];
	return 0;
}

标签:10,短路,单源,leq,que,阶段,ll,make
From: https://www.cnblogs.com/alric/p/18292560

相关文章

  • 单/全最短路专题 两题
    GregandGraph(Floyd)题意:Greg有一个n个点是一个有边权的有向图这个图两个点都有不一样的边(也就意味着a->b和b->a的权值是不一样的)每次操作都会删除一个点,让这个点和其他和它有关系的点都删除.对于每次删除操作,输出操作以前的最短路径之和思路:这一题的思路......
  • 06-6.4.2 最短路径问题
    ......
  • 【Python&GIS】基于Geopandas和Shapely计算矢量面最短路径
    ​    在GIS进行空间分析时经常会需要计算最短路径,我也是最近在计算DPC的时候有这方面的需求,刚开始直接是用面的中心点求得距离,但其对不规则或空洞面很不友好。所以今天跟大家分享一下基于Geopandas和Shapely计算矢量面最短路径,这里的最短即点/边的最短!原创作者:RS迷......
  • 图论最短路径问题与matlab实现
    上一次我们讨论了如何进行图论可视化,这一次我们通过matlab来找出图论中距离最小路径目录一、迪杰斯特拉算法(Dijkstra)二、shortestpath函数用法1.基本语法2.参数设计3.应用实例(1)输入图论信息(2)输入参数进行求解(3)最短路径可视化三、distances函数————求出任意两点的最短路径矩......
  • 【模版】最短路
    原创于2017.04.03:最短路1.多源的Floyd,邻接矩阵实现,复杂度O(n^3),n<400;2.单源Dijkstra,邻接矩阵实现,无负边,复杂度O(n^2),n<10000;3.单源Dijkstra,邻接表实现,堆优化,无负边,复杂度O(ElogE),点多边少;4.单源bellman_ford,边集实现,可验负环,复杂度O(nE),nm<10^8;5.单源SPFA,邻接表+队列实现,可验负环......
  • Codeforces Round 918 G. Bicycles (二维最短路)
    G.Bicycles题意:在一个无向图里你要从1点到达n点,每条路的路径长度是该路的权值乘于你当前的慢度因子。而在每个点上我们都有一个慢度因子可以进行更换,问你到达n点所需要的最短时间。思路:我们很容易想到每次遇到更小的慢度因子我们就要更换,但因为存在你先去绕远路拿更小的慢......
  • 最短路径问题
    最短路径问题最短路问题是图论中一种重要的算法,本章将包括:目录最短路径问题一.概念1.概念2.解决方案二.\(Flord\)算法1.算法思想2.代码详解3.算法应用及局限性二.\(Djikstra\)算法1.算法思想2.代码详解3.算法特征及其局限性三.\(Bellman-ford\)算法1.算法思路2.代码详解3.......
  • 电力系统潮流计算及不对称短路分析(Matlab代码实现)
    ......
  • 电力系统潮流计算及不对称短路分析(Matlab代码实现)
    ......
  • matlab有向网络节点之间最短路经计算
      clc;clear;%定义边列表(源节点,目标节点,权重)w1=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];s1=[1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,4,5,6,7,7,8,9,10,10,10,11,11,11,12,13,14,14,15,15,15,16,17,18,......