zoukankan      html  css  js  c++  java
  • 1053 Path of Equal Weight

    Sample Input:
    20 9 24
    10 2 4 3 5 10 2 18 9 7 2 2 1 3 12 1 8 6 2 2
    00 4 01 02 03 04
    02 1 05
    04 2 06 07
    03 3 11 12 13
    06 1 09
    07 2 08 10
    16 1 15
    13 3 14 16 17
    17 2 18 19



    Sample Output:
    10 5 2 7
    10 4 10
    10 3 3 6 2
    10 3 3 6 2

    给出该树,要求输出符合条件的路径。

      这个题目在键树时可以用静态数组来写,运用dfs函数来写,比较简单。

    #include <iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    const int Max = 110;
    struct Node {
        int wegiht;
        vector<int>child;
    }node[Max];//静态树
    bool cmp(int a, int b) {
        return node[a].wegiht>node[b].wegiht;
    }//按节点的权重,从大到小排列
    int n, m, s, path[Max];
    void dfs(int index, int numnode, int sum) {
        if (sum > s)return;
        if (sum == s) {
            if (!node[index].child.empty())return;
            for (int i = 0; i < numnode; i++) {//如果该结点为叶节点,则输出路径
                if (i != 0)cout << " ";
                cout << node[path[i]].wegiht;
                if (i == numnode - 1)cout << endl;
            }
        }
        for (int i = 0; i < node[index].child.size(); i++) {
            int child = node[index].child[i];
            path[numnode] = child;//path这个数组是从0开始的
            dfs(child, numnode + 1, sum + node[child].wegiht);//进入递归
        }
    }
    int main() {
        cin >> n >> m >> s;//n个结点和m个非叶结点。
        for (int i = 0; i < n; i++) {
            cin>> node[i].wegiht;
        }
        int id, k;
        for (int i = 0; i < m; i++) {
            cin >> id >> k;
            for (int j = 0; j < k; j++) {
                int temp;
                cin >> temp;
                node[id].child.push_back(temp);
            }
            sort(node[id].child.begin(), node[id].child.end(), cmp);//按节点权重由大到小排序。
        }
        path[0] = 0;
        dfs(0, 1, node[0].wegiht);
        return 0;
    }
  • 相关阅读:
    idea 设置注释
    SVN解决冲突
    mysql执行 sql文件遇到USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=utf8错误
    如何查看JDK以及JAVA框架的源码
    一道常被人轻视的前端JS面试题
    Js 常用调试的方法
    主要的Ajax框架都有什么?
    Ajax使用的五步法
    Java正则表达式
    查出在当天所处的日期区间的某些数据
  • 原文地址:https://www.cnblogs.com/kalicener/p/12548170.html
Copyright © 2011-2022 走看看