美文网首页
PAT甲级A1106---树的遍历

PAT甲级A1106---树的遍历

作者: 1nvad3r | 来源:发表于2020-08-18 10:53 被阅读0次

    1106 Lowest Price in Supply Chain (25分)

    1106
    分析:

    使用dfs找出叶节点最低的层次以及个数。

    C++:
    #include <cstdio>
    #include <vector>
    #include <cmath>
    
    using namespace std;
    
    const int maxn = 100010;
    struct Node {
        vector<int> child;
    } nodes[maxn];
    
    int n;
    double p, r;
    int minDepth = maxn, num;
    
    void dfs(int index, int depth) {
        if (nodes[index].child.size() == 0) {
            if (depth < minDepth) {
                minDepth = depth;
                num = 1;
            } else if (depth == minDepth) {
                num++;
            }
            return;
        }
        for (int i = 0; i < nodes[index].child.size(); i++) {
            dfs(nodes[index].child[i], depth + 1);
        }
    }
    
    int main() {
        scanf("%d%lf%lf", &n, &p, &r);
        r /= 100;
        int k, child;
        for (int i = 0; i < n; i++) {
            scanf("%d", &k);
            for (int j = 0; j < k; j++) {
                scanf("%d", &child);
                nodes[i].child.push_back(child);
            }
        }
        dfs(0, 0);
        printf("%.4f %d", p * pow(1 + r, minDepth), num);
    }
    

    相关文章

      网友评论

          本文标题:PAT甲级A1106---树的遍历

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