次短路(hdu 6181)
2017-09-12 19:56
330 查看
题意:求次短路
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的时候 记录次小路径,具体看代码
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 ); } 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(); } }
相关文章推荐
- hdu 6181 Two Paths (次短路)
- hdu 6181 (次短路
- hdu 6181 Two Paths -最短路条数+次短路 - 多校联盟10
- [hdu 6181 Two Paths] Dijkstra求次短路
- hdu 6181 (次短路
- hdu 6181 Two Paths (次短路)
- hdu 6181 (次短路
- 2017 Multi-University Training Contest 10 1011 Two Paths HDU 6181 (次短路+最短路数量)
- hdu 6181 (次短路
- hdu 6181 (次短路
- 2017多校第10场 HDU 6181 Two Paths 次短路
- hdu 6181 (次短路
- hdu 6181 (次短路
- Hdu 6181 Two Paths【次短路】
- hdu 6181 (次短路
- HDU --- 6181 Two Paths 2017第十场多校签到题【裸次短路】
- hdu 6181 Two Paths(最短路,spfa)
- HDU 6181 第k短路
- hdu 6181 Two Paths(次短路)
- 2017 Multi-University Training Contest 10 1011 Two Paths HDU 6181 (次短路)