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

PAT 1090 Highest Price in Supply Chain[较简单]

1090 highest price in supply chain