次短路(hdu 6181)
来源:互联网 发布:c网络语言是什么意思 编辑:程序博客网 时间:2024/06/05 15:04
题意:求次短路
For testcase 1, Alice take path 1 - 3 and its length is 3, and then Bob will take path 1 - 2 - 3 and its length is 5.For testcase 2, Bob will take route 1 - 2 - 1 - 2 and its length is 3
次短路在dijkstra的时候 记录次小路径,具体看代码
#include <cstdio>#include <queue>#include <algorithm>#include <cstring>#include <vector>#include <iostream>using namespace std;#define maxn 100050#define INF (1LL<<60)typedef long long int ll;typedef pair<long long int,int> P;int T;int n , m;ll dis[maxn];ll disc[maxn];vector<P>E[maxn];void dj(){ ll mi = INF; for(int i = 0 ; i <= n ; ++i)dis[i] = disc[i] = INF; dis[1] = 0;//只能赋值最短路的起始点为 0 ,否则次短路无法更新到原点 priority_queue<P,vector<P>,greater<P> > Q; Q.push(P(0,1)); while(! Q.empty()) { ll c = Q.top().first; int u = Q.top().second; Q.pop(); if( disc[u] < c )continue; for(int i = 0 ; i < E[u].size() ; ++i) { int v = E[u][i].first; ll w = E[u][i].second; ll tmp = w + c; if( dis[v] >= tmp ) { swap(tmp,dis[v]);//此处注意交换 Q.push(P(dis[v],v)); } if( disc[v] > tmp && dis[v] < tmp ) { disc[v] = tmp; Q.push( P(tmp,v) ) ; } } } printf("%lld\n",disc[n]);}int main(){ cin >> T; while( T-- ) { cin >> n >> m; for(int i = 0 ; i <= n ; ++i)E[i].clear(); for(int i = 0 ; i < m ; ++i) { int a,b; ll c; scanf("%d %d %lld",&a,&b,&c); E[a].push_back(P(b,c)); E[b].push_back(P(a,c)); } dj(); }}
阅读全文
0 0
- HDU 6181 次短路
- hdu 6181 (次短路
- 次短路(hdu 6181)
- HDU 6181 Two Paths (次短路)
- hdu 6181 Two Paths (次短路)
- hdu 6181 Two Paths(次短路)
- Hdu 6181 Two Paths【次短路】
- hdu-6181 Two Paths次短路
- HDU 6181 Two Paths 次短路
- hdu 6181 Two Paths (次短路)
- hdu 3191 次短路
- HDU 3191 次短路
- hdu 6181 Two Paths -最短路条数+次短路
- HDU-1688 Sightseeing(最短路+次短路)
- hdu-1688次短路问题
- HDU 6181 Two Paths【次短路】【模板题】
- HDU 6181 Two Paths(次短路变形)
- [hdu 6181 Two Paths] Dijkstra求次短路
- 51Nod 1003 阶乘后面0的数量
- 表空间管理
- Codeforces 853D 贪心
- MongoDB实战-分片集群的管理
- 第六课 Tensorflow Cifar10 CNN 卷积神经网络
- 次短路(hdu 6181)
- 生活小记7
- 互斥锁 自旋锁 读写锁的区别
- mybatis开发模式
- java实现从网上下载文件到本地
- SpringMVC原理及SpringMVC搭建详解
- Redis的安装
- ios 中请求主线程刷新UI
- sbt项目中多模块(多个子项目)配置