1420:Dijkastra(II)

简介: 1420:Dijkastra(II)

1420:Dijkastra(II)

时间限制: 1000 ms         内存限制: 131072 KB

【题目描述】

给定一个无向连通图,求从1到n的最短路。

【输入】

第一行两个整数n,m,代表点数和边数;

接下来m行,每行三个整数s,t,d,代表从s到t有一条长度为d的无向边。

【输出】

输出一个整数表示最短距离。

【输入样例】

2 3

1 2 1

1 2 3

2 2 0

【输出样例】

1

【提示】

【数据规模及约定】

N≤200000,M≤400000,1≤S,T≤N,0≤D≤10^9

1. //示例代码 Dijkstrw 结构体优先级队列优化
2. #include <bits/stdc++.h>
3. using namespace std;
4. struct node{
5.  int num;
6.  long long dist;
7.  bool operator >(node y) const{
8.    return dist>y.dist;
9.  }
10. };
11. struct edge{
12.   int to,len;
13. };
14. priority_queue<node,vector<node>,greater<node> > q; //优先队列,更快速
15. vector<edge> w[200050];
16. long long dis[200050];
17. int n,m,s,t,d;
18. bool vis[200050];
19. int main()
20. {
21.   cin>>n>>m;
22.   for(int i=1; i<=m; i++){
23.     cin>>s>>t>>d;//输入
24.     if(s==t) continue;//去除自环
25.     w[s].push_back((edge){t,d});
26.     w[t].push_back((edge){s,d}); //推入邻接表
27.   }
28.   memset(dis,0x3f,sizeof(dis));
29.   dis[1]=0;
30.   vis[1]=1;
31.   q.push((node){1,0}); //初始化
32.   while(!q.empty()){
33.     int k=q.top().num;
34.     q.pop();//取值弹出
35.     vis[k]=1;//访问过
36.     for(int i=0;i<w[k].size();i++){ //算一遍
37.       int p1=w[k][i].to,p2=w[k][i].len;//取出
38.       if(!vis[p1]&&dis[k]+p2<dis[p1]){
39.         dis[p1]=dis[k]+p2;//更新
40.         q.push((node){p1,dis[p1]}); //推入
41.       }
42.     }
43.   }
44.   cout<<dis[n];
45.   return 0;
46. }


相关文章
|
8月前
|
存储 Java uml
|
6月前
|
存储 监控 数据管理
如何设置绿联云与PC电脑同步?
【7月更文挑战第1天】如何设置绿联云与PC电脑同步?
1137 2
|
8月前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
168 6
|
8月前
|
JavaScript 前端开发 容器
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
Vue 的 `Transition` 和 `TransitionGroup` 是用于状态变化过渡和动画的组件。`Transition` 适用于单一元素或组件的进入和离开动画,而 `TransitionGroup` 用于 v-for 列表元素的增删改动画,支持 CSS 过渡和 JS 钩子。
202 1
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
|
4月前
|
开发框架 JavaScript 前端开发
如何选择合适的Web开发框架?
【9月更文挑战第1天】如何选择合适的Web开发框架?
107 1
|
7月前
|
Java 网络安全
解析connectionReset异常的原因与解决方案
解析connectionReset异常的原因与解决方案
|
3月前
|
算法 决策智能
基于prim算法求出网络最小生成树实现网络社团划分和规划
该程序使用MATLAB 2022a版实现路线规划,通过排序节点权值并运用Prim算法生成最小生成树完成网络规划。程序基于TSP问题,采用遗传算法与粒子群优化算法进行路径优化。遗传算法通过编码、选择、交叉及变异操作迭代寻优;粒子群优化算法则通过模拟鸟群觅食行为,更新粒子速度和位置以寻找最优解。
|
5月前
|
Kubernetes 前端开发 应用服务中间件
微服务从代码到k8s部署应有尽有系列(三、鉴权)
微服务从代码到k8s部署应有尽有系列(三、鉴权)
|
8月前
|
监控 安全 网络安全
构筑防御堡垒:云计算环境下的网络安全策略
【4月更文挑战第29天】 随着企业逐渐将数据和服务迁移至云端,云计算已成为现代信息技术架构的关键组成部分。然而,这一转变也带来了前所未有的安全挑战。本文深入探讨了在复杂多变的云计算环境中,如何通过一系列创新的网络安全措施来确保数据的机密性、完整性和可用性。我们将重点讨论云服务模型下的安全威胁,分析不同层面的安全风险,并提出相应的防御策略,以帮助组织构建一个既灵活又坚固的网络安全防线。
45 4
|
8月前
|
设计模式 C#
C#反射机制实现开闭原则的简单工厂模式
C#反射机制实现开闭原则的简单工厂模式
66 0

热门文章

最新文章

下一篇
开通oss服务