最短路:spfa算法

news2024/11/13 7:56:35

最短路:spfa算法

    • 题目描述
    • 参考代码![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3be484da34a84911a0a7dab3f1d84945.png)

题目描述

参考代码在这里插入图片描述

输入示例

3 3
1 2 5
2 3 -3
1 3 4

输出示例

2
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>

using namespace std;

const int N = 1e5 + 10;

int n, m;
int h[N], e[N], ne[N], w[N], idx;
int dist[N];
bool st[N];

void add(int a, int b, int c)
{
    e[idx] = b; ne[idx] = h[a]; w[idx] = c; h[a] = idx; idx++;
}

int spfa()
{
    memset(dist, 0x3f, sizeof dist);
    dist[1] = 0;
    
    queue<int> q;
    q.push(1);
    st[1] = true;
    
    while (q.size())
    {
        auto t = q.front();
        q.pop();
        
        st[t] = false;
        
        for (int i = h[t]; i != -1; i = ne[i])
        {
            int j = e[i];
            if (dist[j] > dist[t] + w[i])
            {
                dist[j] = dist[t] + w[i];
                if (!st[j])
                {
                    q.push(j);
                    st[j] = true;
                }
            }
        }
    }
    
    if (dist[n] == 0x3f3f3f3f) return -1;
    return dist[n];
}

int main()
{
    scanf("%d%d", &n, &m);
    memset(h, -1, sizeof h);
    
    while (m -- )
    {
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        add(x, y, z);
    }
    
    int t = spfa();
    
    if (t == -1) printf("impossible\n");
    else printf("%d\n", t);
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

终极珍藏,新程序员 002 仅剩最后 3 本!一文 Get 订阅指南

《新程序员002&#xff1a;新数据库时代 & 软件定义汽车》纸质版即将售罄&#xff0c;目前纸书仅剩最后 3 本&#xff0c;连同「新程序员001 至 004 期」整套纸质书籍也仅剩 3 套。其中新程序员 001、003、004 纸质版库存也处于告急状态&#xff5e; 购买新程序员001、003、…

实现AI口语练习软件的流程

实现AI口语练习软件需要经过以下几个步骤&#xff0c;包括需求分析、技术选型、系统设计、软件开发、软件测试、软件部署和软件维护。和常用的软件开发流程是类似的&#xff0c;不同点在于AI口语软件需要实现几个技术难点。北京木奇移动技术有限公司&#xff0c;专业的软件外包…

成功编码:加强制造业的软件生命周期

从简化工作流程、提高性能到符合法规要求&#xff0c;架构验证与软件质量保证流程的整合站在了创新的最前沿。了解如何在工业自动化领域保持竞争力。 软件分析和测试在工业自动化中发挥着至关重要的作用。虽然手动测试对于解决微妙问题&#xff0c;尤其是与人类安全相关的问题&…

SAP CO01创建BAPI增强 COXT_BAPI_ORDER_CREATE

生产订单BAPI&#xff1a;COXT_BAPI_ORDER_CREATE不包含EXTENSIONIN参数&#xff0c;考虑到事务提交一致性&#xff0c;故对此BAPI进行增强&#xff0c;使其支持增强字段的更新。 1.对传入参数IS_HEADER进行扩张。 2.添加以下代码&#xff1a; 以上&#xff0c;即可调用BAPI时同…

Source Insight 4.0软件使用记录

目录 工程创建 个人使用 Source Insight 4.0 软件的一些记录。 工程创建 建议起名和自己工程名相同&#xff0c;不能有中文&#xff0c;否则一定会出错 这一步直接点ok即可&#xff1a; 添加所有文件 勾上&#xff1a; 随后便可在右边&#xff0c;打开文件进行阅读

CANable USB转CAN适配器固件的安装(ubuntu20.04)

CANable USB转CAN适配器固件和驱动的安装(以candlelight和pcan为例)ubuntu20.04 candlelight candlelight是什么 Candlelight是CANable设备的固件之一&#xff0c;用于将CANable设备转换为本机CAN设备&#xff0c;无需使用slcand。它允许CANable设备直接在Linux系统上以本机C…

springboot宠物领养管理系统计算机毕业设计源码46534

摘 要 网络发布信息有其突出的优点&#xff0c;即信息量大&#xff0c;资源丰富&#xff0c;更新速度快等&#xff0c;很符合人们希望以捷、便利的方式获得最多最有效信息的要求。本系统就是一个网上宠物领用的系统&#xff0c;为宠物爱好者提供一个信息发布的平台&#xff0c…

使用C#快速搭建一个在windows运行的exe应用

文章目录 一、前言1.1 编写语言需要工具1.2 选择自己需要的组件进行安装 二、新建项目1.1 新建一个 .NET4.x 的项目1.2 添加一个小案例1.3 对界面进行美化1.3.1、配置Form属性1.3.2、配置Button按钮 1.4 查看组将的相关代码 三、后记 一、前言 这是一个比较旧的内容&#xff0…

Linux下生成包含bash命令的文件名的文件

关于如何绕过Linux限制的其他方式请查看&#xff1a; https://book.hacktricks.xyz/linux-hardening/bypass-bash-restrictions 我只是为了生成/创建包含bash命令的文件名而不是详细介绍Linux系统的文件命名规范&#xff0c;所以只需要考虑Linux系统文件命名的部分要求&#xf…

上海媒体宣传:上海展览展会媒体邀约宣传怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 作为首屈一指的城市&#xff0c;上海成为国内国际活动会议的首选地&#xff0c;而且每年官方举办的活动会议也是多不胜数&#xff0c;在上海举办活动&#xff0c;不仅可以提高品牌的知名…

RAG 进阶 LlamaIndex多文档

前言 我们一起来学习LlamaIndex功能更完善的多文档RAG&#xff0c;大家可以参照官方文档来对比学习。 Advanced RAG - LlamaIndex Multi-Doc Agent 单个文档RAG Agent流程 我们结合上图来理解一下文档的处理流程。Document就是文档,它会被解析成多个数据节点(Node),类似RAG …

在矩池云使用GLM-4的详细指南(无感连GitHubHuggingFace)

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本&#xff0c;在多项测试中表现出超越已有同等规模开源模型的性能&#xff0c;它能兼顾多轮对话、网页浏览、代码执行、多语言、长文本推理等多种功能&#xff0c;性能更加强大。其多模态语言模型GLM-4V-9B在…

字符串介绍

String package com.ithema; import java.util.Random; public class StringDemo01 {public static void main(String[] args) {//1.使用直接赋值的方式获取一个字符串对象String s1"abc";System.out.println(s1);//2.使用new的方式来获取一个字符串对象//空参构造:可…

178.二叉树:最大二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

Spring AI 大模型返回内容格式化源码分析及简单使用

为什么需要格式化输出 对于依赖可靠解析输出值的下游应用程序来说&#xff0c;生成结构化输出是LLMs非常重要的能力。开发人员希望快速将 AI 模型的结果转换为数据类型&#xff0c;例如 JSON、XML 或 Java 类&#xff0c;这些数据类型可以传递给其他应用程序函数和方法。 特别…

【数据分享】中国价格统计年鉴(2013-2022)

大家好&#xff01;今天我要向大家介绍一份重要的中国价格统计数据资源——《中国价格统计年鉴》。这份年鉴涵盖了从2013年到2022年中国价格统计全面数据&#xff0c;并提供限时免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 在过去的十年里&#xff0…

解决While loop问题 - Python

当我们在使用 while 循环时&#xff0c;需要确保循环的终止条件最终会被满足&#xff0c;否则循环将会无限执行下去。通常情况下&#xff0c;我们可以在循环内部修改循环控制变量&#xff0c;使得终止条件得以满足。 1、问题背景 一位开发者在使用 Python 开发一个基于文本的游…

NI USB-6009 DAQ采集卡拆解

所需设备&#xff1a; 1、NI USB-6009采集卡&#xff1b; 2、逻辑分析仪&#xff1b; NI USB-6009采集卡全貌&#xff1a; 性能参数&#xff1a; 内部照片&#xff1a; ADC芯片指标&#xff1a; 接线图&#xff1a; 差分模式采样&#xff1a; 采集过程中的SPI总线数据监控&a…

Laravel 6 - 第十九章 模型文件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

不谈AI能替代什么,就聊能帮我们干活的AI客服机器人!

最近在直播群里有老板在找客服外包&#xff0c;因为客服压力大&#xff0c;接不过来了&#xff0c;想找找外包支援一下。据了解电商客服除了压力大&#xff0c;还会遇到过量的重复劳动&#xff0c;比如我们问一个产品&#xff0c;同一天可能就有几百上千客户问同样的问题&#…