poj3662
来源:互联网 发布:sql酒店管理系统 编辑:程序博客网 时间:2024/06/04 23:05
#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <queue>using namespace std;int n,k,m;const int MAX_N = 10010;const int INF = 1011111111;struct edge{ int v; int cost; edge(int _v, int _cost): v(_v),cost(_cost){}};vector <edge> E[MAX_N];void addedge(int u, int v, int w){ E[u].push_back(edge(v,w));}bool vis[MAX_N];int d[MAX_N];int spfa(int lim){ memset(vis, false, sizeof(vis)); for(int i = 0; i < n; i++) d[i] = INF; vis[0] = true; d[0] = 0; queue<int> que; while(!que.empty()) que.pop(); que.push(0); while(!que.empty()){ int u = que.front(); que.pop(); vis[u] = false; for(int i = 0;i < E[u].size(); i++){ edge &e = E[u][i]; int c = e.cost > lim ? 1 : 0; if(d[e.v] > d[u] + c){ d[e.v] = d[u] + c; if(!vis[e.v]){ vis[e.v] = true; que.push(e.v); } } } } return d[n-1];}int main(){ scanf("%d%d%d", &n, &m, &k); int x, y,z; for(int i = 0;i < m; i++){ scanf("%d%d%d", &x, &y, &z); addedge(x-1,y-1,z); addedge(y-1,x-1,z); } int lb = -1, rb = INF; while(rb - lb > 1){ int mid = (rb + lb) / 2; if(spfa(mid) <= k) rb = mid; else lb = mid ; } if(rb == INF) rb = -1; printf("%d\n", rb); return 0;}
0 0
- poj3662
- 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,二分 + 最短路,好题啊
- Poj3662 Telephone Lines (限制最短路)
- POJ3662 Telephone Lines 二分+最短路
- POJ3662 Telephone Lines [二分 最短路]
- POJ3662,洛谷1948 [USACO08JAN]电话线Telephone Lines
- POJ3662 Telephone Lines 二分+最短路
- Android Bundle类
- poj3685
- Android GridView属性集合
- poj3666
- wikioi 3116 高精度练习之加法
- poj3662
- 威尔逊定理
- ZOJ 2317 高精度+状压DP+矩阵快速幂
- poj3662 dij
- Web_FileUpload学习
- java模拟登录校内成绩查询网站,将获得的HTML代码用jsoup解析
- 背包问题(动态规划)
- hdu 1814 Peaceful Commission (2-sat 输出字典序最小路径)
- 【Java常用类库】_StringBuffer