博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图论 最短路 dijkstra
阅读量:4493 次
发布时间:2019-06-08

本文共 1163 字,大约阅读时间需要 3 分钟。

 

板子

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;typedef pair
pr;typedef long long ll;#define fi first#define se second#define me(x) memset(x, -1, sizeof(x))#define mem(x) memset(x, 0, sizeof(x))#define N 20000+5#define NIL -1struct node{ int next, to, w;}edge[N];int n, m, cnt;int head[N], vis[N], dist[N];struct cmp{ bool operator()(const int &a, const int &b) const { return dist[a]
s;void init(){ cnt=0; s.clear(); me(head); mem(vis); for(int i=1; i<=n; i++) dist[i]=INF;}void dijkstra(){ int v=1; s.insert(v); dist[v]=0; while(s.size()) { v=*s.begin(); s.erase(v); vis[v]=1; for(int i=head[v]; ~i; i=edge[i].next) { int t=edge[i].to; if(!vis[t] && dist[t]>dist[v]+edge[i].w) { s.erase(t); dist[t]=dist[v]+edge[i].w; s.insert(t); } } }}int main(){ int i, j, k; int u, v, w; while(cin>>n>>m) { if(!n && !m) break; init(); while(m--) cin>>u>>v>>w, add(u, v, w), add(v, u, w); dijkstra(); if(dist[n]!=INF) cout<
<

 

转载于:https://www.cnblogs.com/op-z/p/11282304.html

你可能感兴趣的文章
大数据时代侦查机制有哪些改变
查看>>
雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
查看>>
Apache Traffic Server服务搭建
查看>>
poj1990两个树状数组
查看>>
学习python-day1
查看>>
Zend_Db_Table->insert ()和zend_db_adapter::insert方法返回值不同
查看>>
递归问题
查看>>
Hyperledger下子项目
查看>>
Linq-查询上一条下一条
查看>>
常见前端开发的题目,可能对你有用
查看>>
BeautifulSoap库入门
查看>>
乐观锁与悲观锁
查看>>
Codeforces Round #328 (Div. 2)D. Super M 虚树直径
查看>>
Java判断是否为移动端
查看>>
chromedriver下载链接以及对应版本
查看>>
[SimplePlayer] 6. 音频同步
查看>>
把一个SVN项目的目录结构 导入到另外一个空白的SVN项目里
查看>>
Android之Adapter用法总结-(转)
查看>>
总结列表显示ListView知识点
查看>>
android 教程实例系列
查看>>