您的位置:首页 > 大数据 > 人工智能

1090. Highest Price in Supply Chain (25)

2016-03-03 14:57 447 查看
    DFS走一遍,找出最大深度,如果最大深度的叶结点不止一个,则统计数量。

#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>

using namespace std;

vector<vector<int>> chains;
int maxLevel = 0;
int maxNum = 0;

void dfs(int src, int level){
if(chains[src].empty()){
if(maxLevel < level){
maxLevel = level;
maxNum = 1;
}else if(maxLevel == level){
maxNum++;
}

return;
}

for(auto& next : chains[src]){
dfs(next, level + 1);
}
}

int main(){
int n;
double p,r;
cin >> n >> p >> r;

chains.resize(n, vector<int>());
int root = -1;
for(int i = 0; i < n; ++i){
int s;
scanf("%d", &s);
if(s == -1) root = i;
else chains[s].push_back(i);
}

dfs(root, 0);
printf("%.2f %d", p * pow(1+r/100, maxLevel), maxNum);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息