poj3662 dij
来源:互联网 发布:sql酒店管理系统 编辑:程序博客网 时间:2024/06/05 09:54
#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <queue>using namespace std;#define MAX_N 11000#define INF 1000000000int n,m,k;struct edge{ int to; int cost; edge(int _to, int _cost): to(_to), cost(_cost){}};typedef pair<int, int> P;vector<edge> G[MAX_N];int d[MAX_N];void addedge(int u,int v,int t){ G[u].push_back(edge(v, t));}int dij(int x){ priority_queue<P , vector<P>, greater<P> > que; fill(d, d + n, INF); d[0] = 0; que.push(P(0, 0)); while(!que.empty()){ P p = que.top(); que.pop(); int v = p.second; if(d[v] < p.first) continue; for(int i = 0;i < G[v].size();i++){ edge &e = G[v][i]; int c = e.cost > x ? 1 : 0; if(d[e.to] > d[v] + c){ d[e.to] = d[v] + c; que.push(P(d[e.to], e.to)); } } } return d[n-1];}int solve(){ int lb = -1, ub = 1000001; while(ub - lb > 1){ int mid = (lb + ub) / 2; if(dij(mid) <= k) ub = mid; else lb = mid; } return (ub == 1000001 ? -1 : ub); }int main(){ scanf("%d%d%d", &n, &m, &k); int u,v,t; for(int i = 0;i < m; i++){ scanf("%d%d%d",&u, &v, &t); addedge(u-1, v-1, t); addedge(v-1, u-1, t); } int ans = solve(); printf("%d\n", ans); return 0;}
0 0
- poj3662 dij
- poj3662
- poj3662
- POJ3662
- Dij
- 二分+SPFA--poj3662
- poj3662 二分+spfa
- POJ3662--Telephone Lines
- POJ3662-Telephone Lines
- POJ3662-Telephone Lines
- poj3662 Telephone Lines
- POJ3662 二分+最短路
- Poj3662 Usaco2008JanSilver Telephone Lines
- poj3662,二分 + 最短路,好题啊
- dij(priority_queue)
- dij算法
- Poj3662 Telephone Lines (限制最短路)
- POJ3662 Telephone Lines 二分+最短路
- poj3666
- wikioi 3116 高精度练习之加法
- poj3662
- 威尔逊定理
- ZOJ 2317 高精度+状压DP+矩阵快速幂
- poj3662 dij
- Web_FileUpload学习
- java模拟登录校内成绩查询网站,将获得的HTML代码用jsoup解析
- 背包问题(动态规划)
- hdu 1814 Peaceful Commission (2-sat 输出字典序最小路径)
- 【Java常用类库】_StringBuffer
- poj3614
- 【Java常用类库】_Runtime类
- poj3579