hdu 2962(最短路+二分)
来源:互联网 发布:诺基亚lumia800软件 编辑:程序博客网 时间:2024/06/07 18:03
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2962
思路:二分枚举高度,每次都sfpa一下,然后如果dist[e]存在的话,就更新shortpath...
View Code
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<vector> 5 #include<algorithm> 6 const int MAXN=1000+10; 7 const int inf=1<<30; 8 using namespace std; 9 struct Node{10 int v,w,h;11 };12 vector<Node>mp[MAXN];13 int n,m;14 int s,e;15 int dist[MAXN];16 bool visited[MAXN];17 18 void SPFA(int u,int limit){19 for(int i=1;i<=n;i++)dist[i]=inf;20 dist[u]=0;21 memset(visited,false,sizeof(visited));22 queue<int>Q;23 Q.push(u);24 while(!Q.empty()){25 int u=Q.front();26 Q.pop();27 visited[u]=false;28 for(int i=0;i<mp[u].size();i++){29 int v=mp[u][i].v;30 int h=mp[u][i].h;31 int w=mp[u][i].w;32 if(h<limit)continue;//h应该尽量要大33 if(dist[u]+w<dist[v]){34 dist[v]=dist[u]+w;35 if(!visited[v]){36 Q.push(v);37 visited[v]=true;38 }39 }40 }41 }42 }43 44 45 46 int main(){47 int _case=1;48 while(~scanf("%d%d",&n,&m)&&(n+m)){49 if(_case>1)puts("");50 for(int i=1;i<=n;i++)mp[i].clear();51 for(int i=1;i<=m;i++){52 int u,v,w,h;53 scanf("%d%d%d%d",&u,&v,&h,&w);54 Node p1,p2;55 p1.v=u,p2.v=v;56 p1.w=p2.w=w;57 if(h==-1)h=inf;58 p1.h=p2.h=h;59 mp[u].push_back(p2);60 mp[v].push_back(p1);61 }62 int limit;63 scanf("%d%d%d",&s,&e,&limit);64 //二分的时候得注意了,不知为什么wa了好多次65 int low=0,high=limit,res=inf;66 while(low<high){67 int mid=(low+high+1)>>1;68 SPFA(s,mid);69 if(dist[e]==inf){70 high=mid-1;71 }else {72 low=mid;73 res=dist[e];74 }75 }76 printf("Case %d:\n",_case++);77 if(res==inf){78 printf("cannot reach destination\n");79 }else {80 printf("maximum height = %d\n",low);81 printf("length of shortest route = %d\n",res);82 }83 }84 return 0;85 }
0 0
- hdu 2962(最短路+二分)
- hdu 2962 Trucking(二分+最短路)
- hdu 2962(二分答案+最短路)
- hdu 2962 Trucking (最短路之SPFA算法 + 二分)
- HDU 2962 Trucking 最短路+二分
- 【HDU】2962 Trucking 二分+最短路
- hdu 2962 Trucking (二分+最短路Spfa)
- HDU 2962 Trucking 二分+最短路
- hdu 1839(二分+最短路)
- hdu 1839(二分+最短路)
- HDU 2962 Trucking(二分+带限制最短路)
- hdu 2363(限制最短路 二分+枚举+最短路)
- ★ HDU 3468 最短路+二分匹配
- hdu 1839 二分搜索+dijkstra最短路
- HDU 2363 Cycling 二分+ 限制最短路
- HDU 2962 Trucking 二分+最短路(带限制最短路)\\不满足递推关系,不能直接是spfa
- HDU 2112 HDU Today (最短路(dijkstra邻接矩阵) + hash + 二分)
- HDU 2544 最短路 (单源最短路)
- hdu 1839(二分+最短路)
- hdu 2145(最短路+排序)
- 第14周-项目一-动物这样叫
- hdu 2363(最短路+枚举)
- hdu 2377
- hdu 2962(最短路+二分)
- hdu 3191+hdu 1688(最短路+次短路)
- hdu 3986(最短路+枚举)
- linux性能分析 sar 命令详解
- hdu 1116(并查集+欧拉路判断)
- IOS 画图总结
- hdu 1181(并查集+拓扑排序)
- 应用程序与内核模块的比较
- hdu 1829+hdu 1856(并查集)