1090 Highest Price in Supply Chain 需再做
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1090 Highest Price in Supply Chain 需再做相关的知识,希望对你有一定的参考价值。
1. 由于用不上结点的数据域,所以可以只用整型向量数组存放每一个结点的子节点下标即可。
2. 涉及到层次,未必用层次遍历,本题用先根遍历,也就是深度优先代码更优雅。
3. 这题创建树未必难,但是题目有一句话必须读懂each number Si is the index of the supplier for the i-th member.Si是i结点的供应商,也就是父结点的意思。
AC代码
#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
typedef long long LL;
using namespace std;
const int maxn = 100010;
int n;//结点总数
double initPrice,rate;//出厂价和利率
int endDepth,deepNum= 0;
vector<int> node[maxn];
void preOrder(int root,int depth){
if(depth>endDepth){
endDepth = depth;
deepNum = 1;
}else if(depth==endDepth)deepNum ++;
int size = node[root].size();
if(size){
for(int i=0;i<size;i++){
preOrder(node[root][i],depth+1);
}
}else return;
}
int main(){
scanf("%d %lf %lf",&n,&initPrice,&rate);
int root,nodeIdx;
for(int i=0;i<n;i++){
scanf("%d",&nodeIdx);
if(nodeIdx==-1)root = i;
else node[nodeIdx].push_back(i);
}
preOrder(root,endDepth);
double hPrice = initPrice*pow(1+rate/100,endDepth);
printf("%.2f %d",hPrice,deepNum);
return 0;
}
以上是关于1090 Highest Price in Supply Chain 需再做的主要内容,如果未能解决你的问题,请参考以下文章
1090. Highest Price in Supply Chain (25)
1090 Highest Price in Supply Chain (25 分)
PAT 1090. Highest Price in Supply Chain
PAT1090:Highest Price in Supply Chain