首页 > 其他 > 详细

1090. Highest Price in Supply Chain (25)-dfs求层数

时间:2017-02-11 12:38:43      阅读:192      评论:0      收藏:0      [点我收藏+]

给出一棵树,在树根出货物的价格为p,然后每往下一层,价格增加r%,求所有叶子节点中的最高价格,以及该层叶子结点个数。

技术分享
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <cmath>
/*
相当于求解树的层数
*/
using namespace std;
const int maxn=100000+5;
int maxlayer=0,num=0;
int head[maxn];
int tot;

struct Edge{
    int to;
    int next;
}edge[maxn];

void init(){
    tot=0;
    memset(head,-1,sizeof(head));
}
void add(int u,int v){
    edge[tot].next=head[u];
    edge[tot].to=v;
    head[u]=tot++;
}
void dfs(int u,int layer){
    if(head[u]==-1){
        if(layer>maxlayer){
            maxlayer=layer;
            num=1;
        }
        else if(layer==maxlayer)
            num++;
        return;
    }
    for(int k=head[u];k!=-1;k=edge[k].next){
        int v=edge[k].to;
        dfs(v,layer+1);
    }
}


int main()
{
    int v,root;
    int n;
    double p,r;
    scanf("%d %lf %lf",&n,&p,&r);
    init();
    for(int i=0;i<n;i++){
        scanf("%d",&v);
        if(v==-1)
            root=i;
        else
            add(v,i);
    }
    dfs(root,0);
    double ans=p*pow(1+r/100,maxlayer);
    printf("%.2lf %d",ans,num);
    return 0;
}
View Code

 

1090. Highest Price in Supply Chain (25)-dfs求层数

原文:http://www.cnblogs.com/chenxiwenruo/p/6388849.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!