hdu2962 Trucking
来源:互联网 发布:双色球关注倾向数据 编辑:程序博客网 时间:2024/06/05 07:20
算是简单题目, 遇到有两个变量同时变化时,一般的做法是二分一个变量,求另外一个变量。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int M = 1005;const int inf = 9999999;int dist[M][M];int hight[M][M];int s, e, maxn, minn, len;int n, m, ans, Case= 1, mid;void init() { minn = inf; ans = -1; len = inf; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++){ dist[i][j] = inf; hight[i][j] = 0; } }}void input() { int x, y, h, d; for(int i = 0; i < m; i++) { scanf("%d%d%d%d", &x, &y, &h, &d); dist[x][y] = dist[y][x] = d; if(h == -1){ hight[x][y] = hight[y][x] = inf; }else { hight[x][y] = hight[y][x] = h; } if(h != -1) minn = min(h, minn); } scanf("%d%d%d", &s,&e, &maxn); if(Case > 1) printf("\n");}int Dijstra(int mid) { int dis[M]; int vist[M]; int index, mmin; for(int i = 1; i <= n; i++) { if(hight[s][i] >= mid){ dis[i] = dist[s][i]; }else { dis[i] = inf; } vist[i] = 0; } dis[s] = 0; vist[s] = 1; for(int k = 0; k <= n; k++) { mmin = inf; for(int i = 1; i <= n; i++) { if(!vist[i] &&dis[i] < mmin) { mmin = dis[i]; index = i; } } if(mmin == inf) break; vist[index] = 1; for(int i = 1; i <= n; i++) { if(!vist[i] && dis[i] > dis[index] + dist[index][i] && hight[index][i] >= mid) { dis[i] = dis[index] + dist[index][i]; } } } return dis[e];}void work() { int temp; mid = (maxn + minn)/2; while(maxn >= minn) { temp = Dijstra(mid); if(temp != inf){ ans = mid; len = temp; minn = mid + 1; }else { maxn = mid - 1; } mid = (maxn + minn)/2; }}void output() { printf("Case %d:\n", Case++); if(ans != -1) { printf("maximum height = %d\n", ans); printf("length of shortest route = %d\n", len); }else { printf("cannot reach destination\n"); }}int main(){ while(scanf("%d%d", &n, &m) != EOF && (n || m)) { init(); input(); work(); output(); } return 0;}
0 0
- hdu2962 Trucking
- Trucking HDU2962
- HDU2962--Trucking最短路
- hdu2962
- Trucking
- Trucking HDU
- hdu2962 二分 + spfa
- hdu2962(最短路+二分)
- hdu2962之二分+最短路
- hdu2962 限制最短路+枚举
- HDU 2962 Trucking
- hdoj 2962 Trucking
- hdu 2962 Trucking
- HDU 2962 Trucking
- nyoj 1002 Trucking
- HDU 2962 Trucking
- HODJ 2962 Trucking
- HDU-2962-Trucking
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程
- 九度OJ1002
- 黑马程序员---jar包 jar命令。 开发工具eclipse,使用方法,和技巧。Object类的特性
- PHP递归获取目录内容readDir,递归删除rmdir
- 四种关系九种图看UML
- hdu2962 Trucking
- POJ 3835 & HDU 3268 Columbus’s bargain(最短路 Spfa)
- Hedge Fund一日游
- 写给自己的话
- python学习笔记——问题篇
- tomcat安装遇到的问题--解决
- 数据结构与算法学习之路:Prim算法和Kruskal算法
- Java学习——错误记录1
- 黑马程序员--- 字符串的重要性, String类的定义方法, StringBuffer类的构造方法