zoukankan      html  css  js  c++  java
  • 1053 Path of Equal Weight (30 分)(树的遍历)

    题目大意:给出树的结构和权值,找从根结点到叶子结点的路径上的权值相加之和等于给定目标数的路径,并且从大到小输出路径

    #include<bits/stdc++.h>
    
    using namespace std;
    int n,m,sum;
    const int N=120;
    struct node
    {
        int w;
        vector<int>p;
    }tree[N];
    bool cmp(int a,int b)
    {
        return tree[a].w>tree[b].w;
    }
    vector<int>path;
    void dfs(int s,int v)
    {
        //cout<<s<<"  "<<v<<endl;
        if(s>sum) return;
        if(s==sum){
            if(tree[v].p.size()!=0) return;
            path.push_back(v);
            for(int i=0;i<path.size();i++){
                if(i) printf(" ");
                printf("%d",tree[path[i]].w);
            }
            printf("
    ");
            path.pop_back();
        }
        path.push_back(v);
        for(int i=0;i<tree[v].p.size();i++){
            dfs(s+tree[tree[v].p[i]].w,tree[v].p[i]);
        }
        path.pop_back();
    }
    int main()
    {
        scanf("%d %d %d",&n,&m,&sum);
        for(int i=0;i<n;i++) scanf("%d",&tree[i].w);
        for(int i=0;i<m;i++){
            int id;
            int k;
            scanf("%d %d",&id,&k);
            for(int j=0;j<k;j++){
                int x;
                scanf("%d",&x);
                tree[id].p.push_back(x);
            }
            sort(tree[id].p.begin(),tree[id].p.end(),cmp);
        }
        dfs(tree[0].w,0);
        return 0;
    }
  • 相关阅读:
    try....exception....finally
    Django的信号机制详解
    python 单例模式
    python raise assert
    python type metaclass
    python 类特殊成员
    python 道生一,一生二,二生三,三生万物
    C#DES加密
    C#AES加密
    C# MD5加密
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10226074.html
Copyright © 2011-2022 走看看