1090 Highest Price in Supply Chain (25 point(s))

matter

不行以后都换成double类型的数据。。。

2.模板:利用DFS求树的深度。

code

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
const int MAXN = 100010;

vector<int> child[MAXN];
int maxdepth = 0 , num = 0;

void DFS(int root , int depth){
	
	// approach the leaf node
	if(child[root].size() == 0){
		if(depth > maxdepth){
			maxdepth = depth;
			num = 1;
		}
		else if(depth == maxdepth){
			num ++;
		}
		return ; 
	}
		
	// not the leaf node	
	for(int i = 0 ; i < child[root].size() ; i ++){
		DFS(child[root][i] , depth + 1);
	}	
}

int main(){
	int N , father , root;
	double P , R;
		
	//input
	scanf("%d %lf %lf" , &N , &P , &R);
	for(int i = 0 ; i < N ; i ++){
		scanf("%d" , &father);
		if(father == -1){
			root = i;				
		}
		else{
			child[father].push_back(i);
		}
	}
	
	//DFS the tree
	DFS(root , 0);
	
	//output
	printf("%.2f %d" , P * pow(1 + R / 100 , maxdepth) , num);
	return 0;
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值