最短路dijkstra堆优化
2024-09-05 15:59:38
demo:
#include<bits/stdc++.h>
#define max_v 102000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
struct edge{int to,cost;};
typedef pair<int,int> P;
int V;
vector<edge>G[max_v];
int d[max_v];
void dijkstra(int s){
priority_queue<P,vector<P>,greater<P> >que;
fill(d,d+V+,inf);
d[s]=;
que.push(P(,s));
while(que.size()){
P p=que.top();
que.pop();
int v=p.second;
if(d[v]<p.first) continue;
for(int i=;i<G[v].size();i++){
edge e=G[v][i];
if(d[e.to]>d[v]+e.cost){
d[e.to]=d[v]+e.cost;
que.push(P(d[e.to],e.to));
}
}
}
} int main(){
int n,m;
while(cin>>n>>m&&n||m){
memset(G,,sizeof G);
V=n;
for(int i=;i<m;i++){
int a,b,c;
cin>>a>>b>>c;
G[a].push_back((edge){b,c});
G[b].push_back((edge){a,c});
}
dijkstra();
cout<<d[V]<<endl;
}
return ;
}
最新文章
- C++ 11 中的右值引用
- Linux下的shell编程(三)BY 四喜三顺
- 简单的内网存活主机ip扫描
- POJ1270 Following Orders[拓扑排序所有方案 Kahn]
- javap生成的字节码
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第一章 数组与内存控制
- JsRender系列demo-10
- Codevs 1065 01字符串
- 开发人员应关注的20个jQuery网站/博客
- Android之旅十八 百度地图环境搭建
- [转]【Android】9-patch图片以及例子说明
- springmvc json数据
- [瞎玩儿系列] 使用SQL实现Logistic回归
- SpringBatch配置数据库
- studio中碰到的jni问题:java.lang.UnsatisfiedLinkError
- Ajax上传图片以及上传之前先预览
- 分频器的Verilog实现
- 十、JAVA面试简答
- python里面 循环明细对比 相同人员明细,生成同一订单里面
- 深入理解MyBatis的原理(一): 独立的入门demo
热门文章
- memset函数用法及注意事项
- linux(ubuntu16.04)下安装和破解pycharm专业版
- eclipse部署和启动guns
- 逻辑斯蒂(logistic)回归深入理解、阐述与实现
- 使用document.domain和iframe实现站内AJAX跨域
- C++之结构体struct
- CodeForces - 650D:Zip-line (LIS &; DP)
- python究竟要不要使用多线程
- 在asp.net中使JQuery的Ajax用总结
- javascript switch continue break 执行语句