求最短路即次短路模板,一条边可以重复走的HDU6181
来源:互联网 发布:怎么自己开淘宝网店 编辑:程序博客网 时间:2024/05/17 07:12
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<iostream>#include<algorithm>#include<vector>#include<queue>#define MAXSIZE 100010#define INF 1e18#define LL long longusing namespace std;//int ans,n,k,a[MAXSIZE],dist1[MAXSIZE],dist2[MAXSIZE],vis[MAXSIZE];int n, k, a[MAXSIZE];LL ans, dist1[MAXSIZE], dist2[MAXSIZE];bool vis[MAXSIZE];typedef pair<LL, int>p;//p.second储存节点:u,p.frist储存s->u的当前最短距离struct node{ int u; int v; LL w; int next;}G[MAXSIZE * 2];void Add(int u,int v,LL w){ G[k].u=u; G[k].v=v; G[k].w=w; G[k].next=a[u]; a[u]=k++;}void bfs(){ priority_queue<p,vector<p>,greater<p> > Q; dist1[1]=0; Q.push(p(0,1)); while(!Q.empty())//可以发现这里没有vis数组, { p k=Q.top(); Q.pop(); int u=k.second; LL d=k.first; if(dist2[u] < d) //小优化:如果取出的不是最短距离就不再向下进行 continue; for(int i=a[u];i!=-1;i=G[i].next) { int v=G[i].v; LL d2=d+G[i].w; if(dist1[v] > d2) //更新最短路 { swap(dist1[v],d2); Q.push(p(dist1[v],v)); } if(dist2[v] >= d2 && dist1[v]<=d2)//更新次短路 { dist2[v]=d2; Q.push(p(dist2[v],v)); } } } ans=dist2[n];}void Init(){ for(int i=0;i<MAXSIZE;i++) { dist1[i]=INF; dist2[i]=INF; vis[i] = false; a[i]=-1; } k=1;}int main(){ int T,u,v,m; LL w; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); Init(); while(m--) { scanf("%d%d%lld",&u,&v,&w); Add(u,v,w); Add(v,u,w); } bfs(); printf("%lld\n", ans); } return 0;}
阅读全文
0 0
- 求最短路即次短路模板,一条边可以重复走的HDU6181
- hdu6181 Two Paths 次短路模板
- hdu6181-启发式搜索A*|次短路模板|最短路枚举-Two Paths
- hdu6181次短路
- HDU6181 Two Paths【次短路】
- 优先队列优化的求最短路和次短路条数以及长度的模板
- Dijkstra求最短路与次短路
- hdu6181 Two Paths(次短路)
- 求最短路的四个模板
- HDU1688 Sightseeing(SPFA 求最短路与次短路的路径条数)可用作模板
- 最短路 & 次短路
- Bellman_ford 求最短路模板
- hdu6181 How Many Paths Are There(次短路条数[模板])
- UVA116走格子求最短路
- POJ3255 Roadblocks dij求次短路 [模板]
- POJ3463 Sightseeing(dijkstra求最短路+次短路)
- poj 3463 Sightseeing(dij求最短路+次短路(比最短路长1)的总走法)
- poj 3463 dijkstra变形(求最短路和次短路的数量)
- jQuery学习笔记6
- 关于升级swif3.0的一些东西(续)
- AngularJS系列之select下拉选择第一个选项为空白的解决办法
- 【C】初学习之库函数——通用的实用工具<stdlib.h>之伪随机序列生成函数
- Http与网络通信(GET和POST方式)
- 求最短路即次短路模板,一条边可以重复走的HDU6181
- [笔记分享] [OS] Linux的时间管理
- leetcode75: Sort Colors
- R语言对高频交易订单流进行建模分析 1
- weex 学习历程
- 报错`mobx.map` is deprecated, use `new ObservableMap` or `mobx.observable.map`instead
- 1015:大小写问题
- var 与let const比较
- mybatis怎么返回某列的最大值