二维spfa [JLOI2011]飞行路线

USACO传送门|二维SPFA 二维SPFA模板,需要的可以学习一下,原创 //BY genskyuine#include #include #include using namespace std; const int MAXN=10010; const int MAXM=50010; int n,m,k,tot; int dis[MAXN][25],h[MAXN]; bool vis[MAXN][25]; stru 阅读详情

问题 D: [JLOI2011]飞行路线

时间限制: 1 Sec  内存限制: 128 MB
提交: 151  解决: 32
[提交][状态][讨论版]

题目描述

Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次出行最少花费多少?

输入

数据的第一行有三个整数,n,m,k,分别表示城市数,航线数和免费乘坐次数。
第二行有两个整数,s,t,分别表示他们出行的起点城市编号和终点城市编号。(0<=s,t<n)
接下来有m行,每行三个整数,a,b,c,表示存在一种航线,能从城市a到达城市b,或从城市b到达城市a,价格为c。(0<=a,b<n,a与b不相等,0<=c<=1000)
 

输出

 
只有一行,包含一个整数,为最少花费。

样例输入

5 6 10 40 1 51 2 52 3 53 4 52 3 30 2 100

样例输出

8

提示

对于30%的数据,2<=n<=50,1<=m<=300,k=0;

对于50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1;

对于100%的数据,2<=n<=10000,1<=m<=50000,0<=k<=10.

  就是普通二维spfa,复习下板子。对了,要用堆优化,而且重载时符号别重载反。。
  
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define N 10000
using namespace std;
int read()
{
    int sum=0,f=1;char x=getchar();
    while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();}
    while(x>='0'&&x<='9'){sum=sum*10+x-'0';x=getchar();}
    return sum*f;
}
int n,m,k,adj[N+5],v[N+5][15];
int dis[N+5][15],e,s,t,ans=(1<<30);
struct road
{
    int v,next,l;
}lu[N*10+5]; 
struct node
{
    int id,h,dis;
    node(){}
    node(int x,int y,int z)
    {
        id=x;h=y;dis=z;
    }
    bool friend operator <(const node &a,const node &b)
    {
        return (a.dis!=b.dis)? (a.dis>b.dis):(a.h>b.h);
    }
};
priority_queue<node> q;
void add(int u,int v,int l){lu[++e].v=v;lu[e].next=adj[u];lu[e].l=l;adj[u]=e;}
void spfa()
{
    dis[s][0]=0;v[s][0]=1;
    q.push(node(s,0,0));
    while(!q.empty())
    {
        node w=q.top();q.pop();int tmp=w.h,x=w.id;
        for(int i=adj[x];i;i=lu[i].next)
        {
            int to=lu[i].v;
            if(dis[to][tmp]>dis[x][tmp]+lu[i].l)
            {
                dis[to][tmp]=dis[x][tmp]+lu[i].l;
                if(!v[to][tmp])
                {
                    v[to][tmp]=1;
                    q.push(node(to,tmp,dis[to][tmp]));
                }
            }
            if(tmp<k&&dis[to][tmp+1]>dis[x][tmp])
            {
                dis[to][tmp+1]=dis[x][tmp];
                if(!v[to][tmp+1])
                {
                    v[to][tmp+1]=1;
                    q.push(node(to,tmp+1,dis[to][tmp+1]));
                }
            }
        }
        v[x][tmp]=0;
    }
}
int main()
{
    n=read();m=read();k=read();s=read();t=read();
    int x,y,z;
    for(int i=1;i<=m;i++)
    {
        x=read();y=read();z=read();
        add(x,y,z);
        add(y,x,z);
    }
    memset(dis,120,sizeof(dis));
    spfa();
    for(int i=0;i<=k;i++)
       ans=min(ans,dis[t][i]);
    cout<<ans;
}

二维费用的最短路(SPFA版) 营救 题目描述 在一个n*m的一个方块阵阵地上仅由楼房和街道组成,现在你在(x1,y1)点,伤员在(x2,y2)点,你可以向周围的8个方向移动,也可以爬上一部分楼房。而伤员因为受了伤,动弹不得,你必须背他回来。因此你所最担心的不是你的路程长短,而是你在救援中费的力气的大小。你爬上一幢高为H的楼房,或者从高为H的楼房房顶下来,都需要花费H的力气,而没有高度落差的行走是不费力的。现在你要... 阅读详情

相关推荐

STL实现的容易理解的二位spfa模板

STL实现的,看完了一定会懂了的。我就是看的这个呢亲

SPFA的两种实现形式(二维数组与数组模拟邻接表)

SPFA的二维数组和数组模拟邻接表实现形式,二维数组的表现形式易于理解但存储空间的实用性较差,而数组模拟邻接表的形式则解决了这个问题。

Maiidamai的博客 592

Halcon 简单的形状匹配定位与区域跟随

【代码】Halcon简单的形状匹配定位与区域跟随。

唐大狗 2806

SDUT 最短路径(二维SPFA)

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2622 1 #include<stdio.h> 2 #include<string.h> 3 #include<queue> 4 #include<vector> ...

anyi7265的博客 271

手把手教你用C#和LibUsbDotNet实现USB设备通信(含完整代码示例)

本文详细介绍了如何使用C#和LibUsbDotNet库实现USB设备通信,包括设备识别、连接建立、同步/异步数据读写等核心操作。通过完整的代码示例,开发者可以快速掌握USB通信的关键技术,适用于工业自动化、医疗设备等多种场景。重点讲解了数据读写优化和错误处理技巧,帮助提升通信效率和可靠性。

a3b4c5的博客 705

YOLOv8_obb的C++工程部署实战:从模型转换到实时视频推理

本文详细介绍了YOLOv8_obb模型在C++环境下的完整工程部署流程,涵盖从PyTorch模型到ONNX格式的转换、基于ONNX Runtime的C++推理引擎搭建、旋转框后处理解析,以及实时视频流处理与性能优化。文章重点解析了模型转换的关键参数、环境配置的常见问题、核心推理代码的实现,并提供了实用的避坑指南,旨在帮助开发者高效完成YOLOv8_obb的C++工程部署。

weixin_29100927的博客 44

【JLOI2011】【BZOJ2763】飞行路线

Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次出行最

CreationAugust is 14 years old forever 1485

【经验分享】使用Keil5烧录代码遇到的问题及解决方法

本文介绍了在使用Keil5烧录代码过程中可能遇到的常见问题,主要为编译错误和下载失败,并提供了解决方案和注意事项。通过本文中提供的具体解决方案和注意事项,希望能够帮助读者更加顺利地进行Keil5烧录代码操作,提高开发效率和成果实现。

qq_63195670的博客 1万+

【bzoj 2763】2763: [JLOI2011]飞行路线 spfa二维

理解一个模板的时候需要更深层次的理解,这题就是一个例子,虽说spfa是一个很迷的算法(你能一下子说出为什么spfa的复杂度就是那么低吗?)其实大多数的时候推荐使用dijikstra(复杂度是确定的nlogn,虽然有点常数),以前在cf上的比赛就有过卡spfa的,好像是一个深层菊花什么什么图,在最坏的情况下复杂度可以达到n2(扯得有点远)。回到这道题,事实上spfa也是广义的递推,所以思维不要局限,

pbihao的博客 501

【零基础入门unity游戏开发——unity通用篇12】导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 760

使用abagen工具箱获取基于脑区的基因表达矩阵

脑区模板定义了您感兴趣的脑区的空间位置。abagen提供了一些预定义的脑区模板,您可以选择使用,也可以使用自定义的脑区模板。它提供了一种简便的方式来获取基于脑区的基因表达矩阵。abagen需要使用Allen脑图谱数据来获取基因表达矩阵。您可以使用abagen内置的下载功能来获取这些数据。这就是使用abagen工具箱获取基于脑区的基因表达矩阵的详细步骤。通过按照上述步骤操作,您可以轻松获取并使用Allen脑图谱数据中的基因表达信息。一旦您加载了脑区模板,您可以使用abagen来获取基于脑区的基因表达矩阵。

web_bug407的博客 1326

[JLOI2011]飞行路线

[JLOI2011]飞行路线 时间限制:1 Sec内存限制:128 MB 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推...

weixin_30907935的博客 71

S7-200 SMART PLC 子程序功能块(阀门控制)

由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 8068

BZOJ[2763]飞行路线

2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个

LJH_KOQI的博客 661

ANFIS实现数据非线性回归附Matlab代码

在本文中,我们将介绍如何使用Matlab实现基于MSE的ANFIS非线性回归,并提供相应的源代码。ANFIS是一种融合了模糊逻辑和神经网络的方法,它可以通过学习数据集中的模式来构建一个模糊推理系统。ANFIS的训练过程基于最小化MSE,以提高模型的拟合能力。通过上述代码示例,我们可以使用基于MSE的ANFIS模型对数据进行非线性回归,并获得相应的预测结果。在示例中,我们定义了一个包含两个样本的新输入数据集 X_new,然后使用训练好的ANFIS模型进行预测,并将结果存储在变量 Y_pred 中。

2301_79326588的博客 473

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

BZOJ 2763 [JLOI2011]飞行路线

题面: 2763: [JLOI2011]飞行路线 Time Limit:10 SecMemory Limit:128 MBSubmit:3204Solved:1224[Submit][Status][Discuss] Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分...

weixin_30408675的博客 99

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

BZOJ 2763: [JLOI2011]飞行路线

Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次

jjs98 967

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【bzoj2763】[JLOI2011]飞行路线

[JLOI2011]飞行路线Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么

M__HD的博客 552

BZOJ2763 [JLOI2011]飞行路线(SPFA + DP)

题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=2763 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿...

dengliugong3918的博客 162

BZOJ 2763: [JLOI2011]飞行路线

2763: [JLOI2011]飞行路线 Time Limit:10 SecMemory Limit:128 MBSubmit:3352Solved:1300[Submit][Status][Discuss] Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,...

weixin_30709635的博客 75

BZOJ2763: [JLOI2011]飞行路线

题目链接【分析】分层图spfa。 (不要直接建分层图,spfa中用二维数组处理就好了。。偷个懒就T了QnQ)【代码】#include <cstdio> #include <iostream> #include <queue> #include <vector> #include <algorithm> #include <cstring> #include <cmath> #include <st

Heret1c 524

[bzoj 2763--JLOI2011]飞行路线

Description n个点,m条双向边,有k次免费的机会,问最短路。 Sample Input 5 6 1 0 4 0 1 5 1 2 5 2 3 5 3 4 5 2 3 3 0 2 100 Sample Output 8 这道题基本算法是spfa,但需要定一个f的二维数组,f[i][j] 表示到编号为i的点用j次免费

galiqing的博客 700

bzoj 2763 [JLOI2011]飞行路线

本题我用的二维spfa,dis[i][j]表示到i点用掉了j次免费机会的最优值, 相当于动态规划,由于数据十分大,普通spfa会T掉3个点,所以考虑堆优化 相信堆优化大家都懂,所以这些提示就够了 #include #include #include using namespace std; struct dd{ int begin,end,juli,next; }jie[200000]; str

雨林的博客 443
上一篇: 大暴力 Function
下一篇: 神spfa [Noi2014]魔法森林
QTY_
博客等级 码龄9年 13粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值