【codevs1269】匈牙利游戏

【综合笔试题】难度 4.5/5,经典次短路问题 这是我们「刷穿 LeetCode」系列文章的第No.2045篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。 阅读详情

Welcome to the Hungary Games!

题目描述 Description

欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。
你被强制要求参加一个赛跑作为一个TV秀的一部分节目,比赛中你需要穿越这些街道,从s开始,到t结束。
很自然的,你想要尽快的完成比赛,因为你的比赛完成的越好,你就能得到更多的商业促销合同。
但是,有一个需要了解的是,如果有人过于聪明找到从s到t的最短路线,那么他就被扔到国家极品人类保护系统中作为一个国家宝藏收藏起来。你显然要避免这种事情的发生,但是也想越快越好。写一个程序来计算一个从s到t的严格次短路线吧。
有的时候,严格次短路线可能访问某些节点不止一次。样例2是一个例子。

输入描述 Input Description

第一行包含两个整数N和M,N代表布达佩斯的节点个数,M代表边的个数。节点编号从1到N。1代表出发点s,N代表终点t。接下来的M行每行三个整数A B L,代表有一条从A到B的长度为L的单向同路。你可以认为A不等于B,也不会有重复的(A,B)对。

输出描述 Output Description

输出从s到t的严格次短路的长度。如果从s到t的路少于2条,输出-1。

样例输入 Sample Input

样例输入1:

4 6
1 2 5
1 3 5
2 3 1
2 4 5
3 4 5
1 4 13
样例输入2:
2 2
1 2 1
2 1 1

样例输出 Sample Output

样例输出1:
11
样例输出2:
3

这道题叫次短路……
和最短路类似,但略有不同
主要就是开第二个距离数组dist2(也就是代码中的cdl(次短路))
用来存放次短路长度
当然也可以用结构体储存辣
下面是代码~_~

#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long tot,dist1[200010],cdl[200010],head[200010],Ts,Te,T,C;
bool passby[200010];
struct Edge
{
    int next,to,dist;
}edge[900010];
void add(int from,int to,int dd)//dd=距离;
{
    edge[++tot].to=to;//加终点 
    edge[tot].dist=dd;//加距离 
    edge[tot].next=head[from];//更新上条路 
    head[from]=tot;//更新这条路 
}
queue<int> q;
void spfa(int s)
{
    dist1[s]/*=cdl[s]*/=0;
    passby[s]=1;
    q.push(s);
    for(;!q.empty();)
    {
        int x=q.front();
        passby[x]=0;
        q.pop();
        for(int i=head[x];i;i=edge[i].next)
        {
            Edge e=edge[i];
            if(dist1[e.to]>dist1[x]+e.dist)
            {
                cdl[e.to]=dist1[e.to];
                dist1[e.to]=dist1[x]+e.dist;
                if(!passby[e.to])
                {
                    passby[e.to]=1;
                    q.push(e.to);
                }
            }
            else if(cdl[e.to]>dist1[x]+e.dist&&dist1[e.to]<dist1[x]+e.dist)//注意&&后的东西 
            {
                cdl[e.to]=dist1[x]+e.dist;
                if(!passby[e.to])
                {
                    passby[e.to]=1;
                    q.push(e.to);
                }
            }
            else if(cdl[e.to]>cdl[x]+e.dist)
            {
                cdl[e.to]=cdl[x]+e.dist;
                if(!passby[e.to])
                {
                    passby[e.to]=1;
                    q.push(e.to);
                }
            }
        }
    }
}
int main()
{
    cin>>T>>C;
    for(int i=0;i<=C+5;i++)dist1[i]=cdl[i]=0x7ffffffffffffff;
    for(int i=1;i<=C;i++)
    {
        int Rs,Re,Ci;
        cin>>Rs>>Re>>Ci;
        add(Rs,Re,Ci);
    }
    spfa(1);
    if(cdl[T]!=0x7ffffffffffffff)
        cout<<cdl[T];
    else
        cout<<"-1" ;
    return 0;
}
EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排 SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。 阅读详情

相关推荐

详细教程:如何使用elasticsearch 8.x进行向量搜索

大模型的热度使得向量数据库和embedding也成了ai领域的热门话题,有别于从头开始训练一个大模型或基于基础模型进行微调的方式,embedding检索相关上下文是对大模型进行定制的各种方法中成本最低、技术实现最便捷的方式。从技术实现的角度,

qq_50790981的博客 1万+

严格次短路 & 非严格次短路

求次短路的思路都相同,都是把值丢到优先队列里,每次取出最小值将其邻点更新。 如果能更新最短距离的话,肯定更新最短距离,换下来的最短距离递补成次短距离;不能更新最短距离的话,再看能否更新次短距离。 而严格次短和非严格次短的区别就在于:最短距离和次短距离能否更新成相同值。 一、非严格次短路 模型 次短路的长度可以和最短路长度相同,问次短路长度为多少? 思路 定义两个 dist数组,用于存放最短距离和次短距离。 从优先队列里面取出一点 dis,遍历所有邻点 tx: 如果 dis + w 比 tx 的最短距离小

Mr_dimple的博客 1955

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet),有灵活的接口规范与开放生态。采用对商用友好的 Apache 2.0 开源协议。

向往自由的少年!(我是一个少年!!!) 1696

严格次短路问题(洛谷P2865题解,Dijkstra算法应用)

次短路问题

水,全都是水 1152

SQL 通过sum() over(order by ,rownum)实现财务现金日记账实例

SELECT 类型,to_char(发生日期,'yyyy-MM-dd') 发生日期,期初余额,借方金额,贷方金额, (CASE WHEN 借方金额>0 THEN '借' WHEN 贷方金额>0 THEN '贷' ELSE '平' END) 方向, sum(收支金额) over(order by 发生日期, rownum) 余额 FROM( SELECT LX 类型,账户,账号,摘要,发生日期,单据ID, ...

qq_41451794的博客 1023

使用python实现随机正态分布数据,并导出到表格(超详细)

最近需要大量的正态分布的数据,为了方便,使用python实现随机正态分布,画出理想正态分布图和实际的矩形分布,并导出到表格里面。以上就是今天要讲的内容,本文仅仅简单介绍了使用python随机生成正态分布的数据,画图,并导出。正态分布是机器学习中很常见的一种需求,往往需要大量的数据进行测试,此时,本文的方法就可以大大减少因数据而花费的时间啦!如有问题,欢迎评论区留言啊!

m0_53533553的博客 1万+

POJ-3255 Roadblocks(次短路)

Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best friends. She does not want to get to her old home too quickly, because she likes the scenery along the way. She has decided to take the second-shortest rather than the

yo_bc的博客 763

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

POJ-3255-次短路

这个题就是严格次短路问题,边是无向边,这里记下三种做法,一是直接dijkstra求,二是dijkstra+A*求,三是两次最短路。 dijkstra: #include &lt;cstring&gt; #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;algorithm&...

alusang的博客 1957

【LDPC-7】LLR量化位宽对LDPC译码性能的影响分析——以最小和译码算法为例进行matlab仿真

最小和译码算法的步骤如下:最后译码结果如果满足或者完成所有迭代次数,则译码算法停止迭代,否则继续进行译码迭代操作。

FPGA/MATLAB学习教程/源码/项目合作开发 1471

基于Simulink的基于MPC的实时ZMP约束步态优化仿真

本文完成了基于Simulink的MPC实时ZMP约束步态优化仿真,实现了:✅ 建立3D-LIPM预测模型✅ 设计带ZMP可行域约束的MPC优化器✅ 实现闭环实时求解与扰动抑制✅ 验证强鲁棒性与安全性✅ 为人形机器人野外行走、人机交互提供先进控制方案。

xiaoheshang_123的博客 86

codevs 1269 匈牙利游戏

题目描述 DescriptionWelcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets.欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。You have been forced to join a race as part of a “Re

Loi_Mapleleaf的小池 438

【ESP32设备通信】-LoRaWAN网关

在物联网 (IoT) 时代,连接设备和收集数据变得比以往任何时候都更加容易和重要。 LoRaWAN(远程广域网)技术已成为远程、低功耗物联网通信的强大解决方案。 在本教程中,我们将使用 ESp32 构建 LoRaWAN 网关电路,并使用 ESP32 和 BME280 传感器构建传感器节点电路。 对于这两个电路,我们将使用基于 SX1278 (Ra-02) LoRa 模块在设备之间进行无线通信。 我们还将向您展示如何将传感器数据传输到流行的物联网平台 ThingSpeak。

视觉与物联智能 1582

【codevs 1269】匈牙利游戏

题目描述 Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets.欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。You have been forced to join a race as part of a “

LOI_Sherlock 552

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Codevs1269 匈牙利游戏

题目描述 DescriptionWelcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets.欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。You have been forced to join a race as part of a “Re

LOI__DiJiang的博客 518

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

codevs 1269 匈牙利游戏

        codevs 1269 匈牙利游戏 题目描述Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets. 欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。 You have ...

weixin_30724853的博客 121

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

codevs——1269 匈牙利游戏

1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述Description Welcome to the Hungary Games! The streets of ...

weixin_34092455的博客 126

Codevs1269 匈牙利游戏 次短路spfa

Codevs1269 匈牙利游戏更新时变为3种情况: 1.最短路更新最短路; 2.最短路不能更新最短路但能更新次短路; 3.次短路更新次短路。思考一下,就显然了。#include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> #include <queue> using namespace std;#def

QER 的博客 567

codevs 1269 匈牙利游戏 SPFA+次短路

题目描述 Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets. 欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。 You have been for...

dataxiang6224的博客 191

[codevs1269] 匈牙利游戏

题解  借鉴了hzwer和网上的做法。。此题是个次短路的模板题 分三种情况更新 1.可以更新最短路 :原最短路变为次短路 更新最短路 2.可以更新次短路但不能更新最短路 :更新次短路 3.次段路也可以更新次段路:那么更新次短路 #include #include #include #include #include #include #include #define N 20001 #

Edt! 371
上一篇: 【1999noip提高组】拦截导弹
下一篇: 【codevs3304】水果姐逛水果街
Loi_fluency
博客等级 码龄11年 22粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值