poj 3255
来源:互联网 发布:短信平台群发软件 编辑:程序博客网 时间:2024/06/06 12:52
《挑战程序设计竞赛》 例题
求次短路 先求最短路
再更新
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<cmath>#include<queue>#include<iostream>using namespace std;const int maxn = 5000 + 5;const int INF = 100000000;typedef long long LL;typedef pair<int,int> P;int n,r;struct edge{ int to,cost;};vector<edge> G[maxn];int dist[maxn];int dist2[maxn];void solve(){ priority_queue<P,vector<P>,greater<P> > que; fill(dist,dist+n,INF); fill(dist2,dist2+n,INF); dist[0] = 0; que.push(P(0,0)); while(!que.empty()){ P p = que.top();que.pop(); int v = p.second,d = p.first; if(dist2[v] < d ) continue; for(int i = 0;i < G[v].size();i++){ edge &e = G[v][i]; int d2 = d + e.cost; if(dist[e.to] > d2){ swap(dist[e.to],d2); que.push(P(dist[e.to],e.to)); } if(dist2[e.to] > d2 && dist[e.to] < d2){ dist2[e.to] = d2; que.push(P(dist2[e.to],e.to)); } } } printf("%d\n",dist2[n-1]);}int main(){ while(scanf("%d%d",&n,&r) != EOF){ for(int i = 0;i <= n;i++) G[i].clear(); for(int i = 0;i < r;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); x--;y--; G[x].push_back(edge{y,z}); G[y].push_back(edge{x,z}); } solve(); } return 0;}
0 0
- POJ 3255
- poj 3255
- poj 3255
- poj 3255
- POJ 3255
- POJ 3255
- poj 3255
- poj 3255
- poj 3255
- poj 3255
- POJ 3255
- poj 3255
- POJ 3255
- poj 3255 Roadblocks
- poj 3255 Roadblocks
- poj 3255 求次大最短路
- POJ-3255-Roadblocks
- POJ 3255 Roadblocks
- 排序算法之计数排序
- _tfopen_s UNICODE 解决乱码问题
- qemu的安装步骤详解(适合ubuntu和windows)
- VS2010 关于char*转为LPWSTR
- 第四讲:使用html5中的canvas标签画出一个球在指定区域内的运动
- poj 3255
- 在博客中写公式
- Unable to load dynamic library '/usr/lib64/php/modules/json.so'
- 由scanf() 和 fgets() 引发的思考
- ubuntu命令
- 新辰:共享是SEO的思维 用户是SEO的核心
- poj 2393
- 生成config.h
- 搭建自己的OpenWrt开发环境