1106 Lowest Price in Supply Chain (25 分)(树的遍历)

求叶子结点处能活得最低价格以及能提供最低价格的叶子结点的个数

#include<bits/stdc++.h>

using namespace std;
const int N=1e5+10;
vector<int>vec[N];
int minn=0x3f3f3f3f;
int num=1;
void dfs(int v,int step)
{
    if(vec[v].size()==0){
        if(minn>step){
            minn=step;
            num=1;
        }
        else if(minn==step){
            num++;
        }

    }
    for(int i=0;i<vec[v].size();i++){
        dfs(vec[v][i],step+1);
    }
}
int main()
{
    int n;
    double price,rate;
    scanf("%d %lf %lf",&n,&price,&rate);
    for(int i=0;i<n;i++){
        int k;
        scanf("%d",&k);
        if(k!=0){
            for(int j=0;j<k;j++){
                int x;
                scanf("%d",&x);
                vec[i].push_back(x);
            }
        }
    }
    dfs(0,0);
    printf("%.4f %d\n",price*1.0*pow(1+rate/100.0,minn),num);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/chenchen-12/p/10085151.html