1106. Lowest Price in Supply Chain (25)
2015-12-23 21:25
423 查看
PAT上一道题目。原题题意是给定供应商到零售商的供应树结构,每经过一级供应商价格都会提高百分之r,初始供应商提供的价格为p,求最终到达零售商的最低价格,及最低零售商的个数。实际上就是求到达叶子节点的最短路径。深度优先搜索可以解决,但要求正确剪枝并且记录最短路径个数,容易超时。采用广度优先反而更快更简洁,因为最短路径的叶节点肯定在同一层上,记录个数也方便。代码如下:
// 1106. Lowest Price in Supply Chain (25).cpp : 定义控制台应用程序的入口点。 // //#include "stdafx.h" #include<vector> #include<queue> #include<math.h> #include<stdio.h> using namespace std; int main() { int n; double p,r; scanf("%d%lf%lf",&n,&p,&r); vector<vector<int>> AdjSupplier(n); for(int i=0;i<n;++i) { int k; scanf("%d",&k); for(int j=0;j<k;++j) { int t; scanf("%d",&t); AdjSupplier[i].push_back(t); } } int levels = 0; queue<int>Q; Q.push(0); bool flag = false; int num = 0; while(Q.empty()==false&&!flag) { queue<int>H; while(Q.empty()==false) { int t = Q.front(); Q.pop(); if(AdjSupplier[t].size()==0){ flag = true; num++; } for(int i=0;i<AdjSupplier[t].size();++i) { H.push(AdjSupplier[t][i]); } } if(flag) break; ++levels; while(H.empty()==false) { Q.push(H.front()); H.pop(); } } double ans = p*pow((1+r/100.0),double(levels)); printf("%.4lf %d\n",ans,num); return 0; }
相关文章推荐
- raid
- linker command failed with exit code 1 (use -v to see invocation)解决办法
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- winmail mail server的安装和使用方法
- 【VisualSVN Server】Custom action GenerateSSLKey failed: Command terminated with non-zero exit code
- ERROR: Failed to load /usr/local/ERL_LIBS_FILE/esdl/rebar.config
- 表单验证(email,手机号,座机等)
- Daily Scrumming* 2015.12.22(Day 14)
- Daily Scrum- 12/23
- mybaits入门(含实例教程和源码)
- mybaits入门(含实例教程和源码)
- Yocto tips (16): Yocto 制作SDK分发Toolchain 脱离Yocto环境开发
- HDU-1023 -Train Problem II(卡特兰数)
- hdu1151Air Raid——最小路径覆盖
- INSTALL_FAILED_UPDATE_INCOMPATIBLE
- [Err] 1205 - Lock wait timeout exceeded; try restarting transaction
- Your project path contains non-ASCII characters
- Page needs a session and none is available] with root cause
- Brainteaser:Bulb Switcher求平方根的思考
- http://blog.csdn.net/column/details/android-advanced-dev.html