A1079 Total Sales of Supply Chain (25分)

/*
題意:
給出N(代表總數(shù)),價(jià)格,倍率
求出所有葉節(jié)點(diǎn)貨物量 * 層數(shù)*倍率
解題:
1、結(jié)構(gòu)體
2、深度遍歷
3、主結(jié)構(gòu)s

learn && wrong:
1、pow倍率
2、深度遍歷的寫(xiě)法
3、
結(jié)構(gòu)體
p,r,ans
dfs實(shí)現(xiàn)
主函數(shù),讀入,并且更新利率
for循環(huán),讀入所有的值,
調(diào)用DFS
打印紙
*/

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

const int maxn = 100010;

struct node {
    double data;    //數(shù)據(jù)域(貨物量)
    vector<int> child;  //指針域
}Node[maxn];            //存放樹(shù)

int n;
double p, r, ans = 0;   //ans為葉節(jié)點(diǎn)貨物的價(jià)格之和

void DFS(int index, int depth) {
    if (Node[index].child.size() == 0) {    //到達(dá)葉節(jié)點(diǎn)
        ans += Node[index].data * pow(1 + r, depth);    //累加葉節(jié)點(diǎn)貨物的價(jià)格
        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為節(jié)點(diǎn)i的子節(jié)點(diǎn)
            }
        }
    }
    DFS(0, 0);      //DFS幾點(diǎn)入口
    printf("%.1f\n", p * ans);  //輸出結(jié)果
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容