1079 Total Sales of Supply Chain (25 分)

水~。

题意

给出一棵销售供应的树,树根唯一。在树根处货物的价格为P,然后从根结点开始每往子结点走一层,该层的货物价格将会在父亲结点的价格上增加r%。给出每个叶结点的货物量,求它们的价格之和。

注意点

输入中,如果\(K_i\)为0,则表示该结点为叶结点,后面跟的数字为该叶结点的货物量;如果\(K_i\)不为0,则表示该结点为非叶子结点,\(K_i\)为其子结点的个数,后面跟的数字都是子结点编号。

const int N=1e5+10;
vector<int> g[N];
int cnt[N];
int n;
double price,rate;
double ans;

void dfs(int root,double cost)
{
    if(g[root].size() == 0)
    {
        ans+=cost*cnt[root];
        return;
    }

    for(int i=0;i<g[root].size();i++)
    {
        int j=g[root][i];
        dfs(j,cost*(1+rate));
    }
}

int main()
{
    cin>>n>>price>>rate;
    rate/=100;

    for(int i=0;i<n;i++)
    {
        int k;
        cin>>k;
        if(k == 0)
        {
            int t;
            cin>>t;
            cnt[i]=t;
        }
        else
        {
            for(int j=0;j<k;j++)
            {
                int x;
                cin>>x;
                g[i].pb(x);
            }
        }
    }

    dfs(0,price);

    printf("%.1f\n",ans);

    //system("pause");
    return 0;
}
posted @ 2021-02-26 22:52  Dazzling!  阅读(41)  评论(0编辑  收藏  举报