美文网首页
A1079 Total Sales of Supply Chai

A1079 Total Sales of Supply Chai

作者: km15 | 来源:发表于2020-03-10 11:26 被阅读0次

    /*
    题意:
    给出N(代表总数),价格,倍率
    求出所有叶节点货物量 * 层数*倍率
    解题:
    1、结构体
    2、深度遍历
    3、主结构s

    learn && wrong:
    1、pow倍率
    2、深度遍历的写法
    3、
    结构体
    p,r,ans
    dfs实现
    主函数,读入,并且更新利率
    for循环,读入所有的值,
    调用DFS
    打印纸
    */

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <cmath>
    #include <vector>
    using namespace std;
    
    const int maxn = 100010;
    
    struct node {
        double data;    //数据域(货物量)
        vector<int> child;  //指针域
    }Node[maxn];            //存放树
    
    int n;
    double p, r, ans = 0;   //ans为叶节点货物的价格之和
    
    void DFS(int index, int depth) {
        if (Node[index].child.size() == 0) {    //到达叶节点
            ans += Node[index].data * pow(1 + r, depth);    //累加叶节点货物的价格
            return;
        }
        for (int i = 0;i < Node[index].child.size();i++) {
            DFS(Node[index].child[i],depth + 1);
        }
    }
    
    int main()
    {
        int k, child;
        cin >> n >> p >> r;
        r /= 100;
        for (int i = 0;i < n;i++) {
            cin >> k;
            if (k == 0) {
                scanf("%lf", &Node[i].data);
            }
            else {
                for (int j = 0;j < k;j++) {
                    scanf("%d", &child);
                    Node[i].child.push_back(child); //child为节点i的子节点
                }
            }
        }
        DFS(0, 0);      //DFS几点入口
        printf("%.1f\n", p * ans);  //输出结果
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:A1079 Total Sales of Supply Chai

          本文链接:https://www.haomeiwen.com/subject/fzrddhtx.html