AcWing 849. Dijkstra求最短路 I &&II

2023-10-26

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。

请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。

输入格式

第一行包含整数 nn 和 mm。

接下来 mm 行每行包含三个整数 x,y,zx,y,z,表示存在一条从点 xx 到点 yy 的有向边,边长为 zz。

输出格式

输出一个整数,表示 1 号点到 n 号点的最短距离。

如果路径不存在,则输出 −1。

数据范围

1≤n≤500  1≤n≤500,
1≤m≤1e5  1≤m≤1e5,
图中涉及边长均不超过10000。

输入样例:

3 3
1 2 2
2 3 1
1 3 4

输出样例:

3

代码: 

#include<bits/stdc++.h>
using namespace std;
const int N=505;
const int INF=0x3f3f3f3f;

int n,m;
int g[N][N];
int dis[N];
bool st[N];

int Dijkstra(){
	memset(dis,0x3f,sizeof dis);
	dis[1]=0;
	for(int i=0;i<n-1;i++){
		//找到最小值
		int t=-1;
		for(int j=1;j<=n;j++){
			if(!st[j]&&(t==-1||dis[t]>dis[j])){
				t=j;
			}
		} 
		st[t]=true;
		for(int j=1;j<=n;j++)
			dis[j]=min(dis[j],g[t][j]+dis[t]);
			
	}
	if(dis[n]==INF) return -1;
	return dis[n];
}

int main(){
	scanf("%d%d",&n,&m);
	memset(g,0x3f,sizeof g);
	while(m--){
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		g[a][b]=min(g[a][b],c);
	}
	int res=Dijkstra();
	cout<<res;
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AcWing 849. Dijkstra求最短路 I &&II 的相关文章

随机推荐

  • msconfig蓝屏_在msconfig里修改了处理器数和最大内存后电脑无法启动一直蓝屏

    楼主你 很有才 没事改那玩样 你以为4核心就 是4个处理器了 也 从没听说过 天冷了 启动会很慢www mh456 com防采集 win10 上面那个老兄2113 我代码没成功 5261情况基本符合就是没成 懵 然后我开4102机按esc选
  • 后端实战教程:如何使用 Node.js 开发 RESTful API 接口(Node.js + Express + Sequelize + MySQL)

    使用 Node js 开发 RESTful API 接口 后端部分 node js Express Sequelize MySQL 后端部分 node js Express MySQL 后端部分 后端 node js 项目结构 安装 nod
  • 60道逻辑推理题及答案

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 前言 程序员面试题中经常会出现一些烧脑的逻辑题 博主觉得这种题目非常有趣 于是收集了一些分享给大家 1 假设有一个池塘 里面有无穷多的水 现有2
  • 学完python基础知识之后可以做些什么-学完python后再学什么

    本文收集整理关于学完python后再学什么的相关议题 使用内容导航快速到达 内容导航 Q1 Python学完还需要学什么才可以开发真正的应用软件 你说的c c mfc的关系 并不完全需要向你所说的先后顺序去学 只是说c语言属于面向过程的语言
  • F1.52 视频编码简介

    视频编解码的应用技术很复杂 涉及到的技术主要包括I P B帧技术 运动估计和运动补偿等 视频压缩编码过程一般分3个步骤 包括时间维 空间维及熵编码 视频解码是编码的逆过程 首先是时间维压缩 主要以参考帧的数据预测当前帧的数据 输出预测向量和
  • QFontMetrics、QLabe::paintEvent() 实现label自适应 text宽度, 并添加下划线,Qlabel中 字符串宽度获取

    参考 实用QFontMetrics QLabe 中字符串宽度获取 每个字符的宽度 QFontMetrics fontMetrics this gt font 字符串总宽度 int textWidth fontMetrics width m
  • 结巴分词中TFIDF的原理

    之前了解TFIDF只是基于公式 今天被阿里面试官问住了 所以深入讨论下TFIDF在结巴分词中原理 概念 TF IDF term frequency inverse document frequency 是一种用于资讯检索与资讯探勘的常用加权
  • MFC-核心类库-CWnd的成员函数介绍(二)

    1 CWnd FromHandle CWnd在给定窗口句柄时 返回指向对象的指针 如果CWnd对象未附加到句柄 CWnd则会创建并附加临时对象 static CWnd PASCAL FromHandle HWND hWnd 2 CWnd A
  • 工程代码模板注释及C规范

    工程代码模板注释规范 效果 使用方法以IAR为例 C代码规范 工程注释模板 C文件模板 h文件模板 函数注释 函数或变量命名方式 文件编码 对齐方式 优化 防御性编程 完成 Doxygen全套工具下载 效果 chm文件 网页效果 使用方法以
  • linux修改主机名的方法

    linux修改主机名的方法 用hostname命令可以临时修改机器名 但机器重新启动之后就会恢复原来的值 hostname 查看机器名 hostname i 查看本机器名对应的ip地址 另外一种方法就是之久修改配置文件 修改 etc sys
  • 网络与信息安全基础知识--网络的协议与标准

    说在前面 本系列文章专注于软考备考复习内容梳理 文章内容是对教材中知识点和考点的提炼 备考过程中可以有针对的进行复习 减少阅读量 有的放矢 导航目录 一 网络的标准 1 电信标准 2 相关国际标准的制定机构 二 局域网协议 1 LAN模型
  • 使用boost::gregorian模块计算自出生以来的天数的测试程序(C/C++)

    使用boost gregorian模块计算自出生以来的天数的测试程序 C C 在本文中 我们将介绍如何使用C 中的boost gregorian模块来计算自出生以来的天数 boost gregorian是一个日期和时间处理库 提供了处理日期
  • 华为数字化转型之道 平台篇 第十二章 云华数字平台

    第十二章 云华数字平台 企业开展数字化转型 将面临复杂的业务形态 丰富多样的场景以及分步于全球的业务和资源 这就需要有不同类型的数字技术 不同类型的IT平台和基础设施服务提供支撑 数字平台以自助 按需 在线的方式为业务以及IT产品团队提供上
  • FISCO BCOS Python SDK环境配置(Ubuntu)

    环境要求 依赖软件 CentOS sudo yum install y zlib devel libffi devel wget git MacOs brew install wget git Ubuntu sudo apt install
  • OpenCore介绍

    一 OpenCore简介 OpenCore是Android的多媒体核心 采用C 实现 定义了全功能的操作系统移植层 OSCL 各种基本的功能均被封装成类的形式 各层次之间的接口多使用继承等方式 从宏观上来看 它主要包含了两大方面的内容 PV
  • Win10安装Nginx

    一 下载安装包 链接 https pan baidu com s 1TAzO7uyNLtGxejdeyh1UQQ 提取码 pdkv 二 安装 1 解压缩 运行cmd 使用命令进行操作 不要直接双击nginx exe 使用命令到达nginx的
  • 企业如何进行“对标”管理?

    对标 管理起源于上世纪70年代的美国 最初是人们利用 对标 寻找与别的公司的差距 把它作为一种调查比较的基准方法 对标 管理是寻找和学习最佳管理案例和运行方式的一种方法 现已成为最受企业欢迎的第三大战略管理方法 对标 就是对比标杆找差距 推
  • SpringMVC ViewResolver查找序列

    原文地址 http xiaoyaocao iteye com blog 1839125 虽然我们在之前的示例中一直都是使用一个InternalResourceViewResolver进行视图查找 但这并不意味着每个基于 Spring MVC
  • java使用httpclient封装post请求和get的请求

    在我们程序员生涯中 经常要复用代码 所以我们应该养成时常整理代码的好习惯 以下是我之前封装的httpclient的post和get请求所用的代码 package com marco common import java io Buffere
  • AcWing 849. Dijkstra求最短路 I &&II

    给定一个 n 个点 m 条边的有向图 图中可能存在重边和自环 所有边权均为正值 请你求出 1 号点到 n 号点的最短距离 如果无法从 1 号点走到 n 号点 则输出 1 输入格式 第一行包含整数 nn 和 mm 接下来 mm 行每行包含三个