1053 Path of Equal Weight (30 分)难度: 一般 / 树的遍历

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1053 Path of Equal Weight (30 分)难度: 一般 / 树的遍历相关的知识,希望对你有一定的参考价值。


https://pintia.cn/problem-sets/994805342720868352/problems/994805424153280512

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
vector<int>ve[N];
vector< vector<int> >ans;
vector<int>path;
int n,m,s,w[N];
bool cmp(vector<int> a,vector<int> b) {return a>b;}
void dfs(int u,int sum)
{
    if(ve[u].size()==0)//说明是叶子结点
    {
        if(sum+w[0]==s) ans.push_back(path);//和相等
        return;
    }
    for(int i=0;i<ve[u].size();i++)
    {
        path.push_back(w[ve[u][i]]);//保存路径权重
        dfs(ve[u][i],sum+w[ve[u][i]]);
        path.pop_back();//恢复现场
    }
}
int main(void)
{
    cin>>n>>m>>s;
    for(int i=0;i<n;i++) cin>>w[i];
    for(int i=0;i<m;i++)
    {
        int id,k,x; cin>>id>>k;
        for(int j=0;j<k;j++) cin>>x,ve[id].push_back(x);
    }
    dfs(0,0);
    sort(ans.begin(),ans.end(),cmp);
    for(int i=0;i<ans.size();i++)
    {
        cout<<w[0];
        for(int j=0;j<ans[i].size();j++) cout<<" "<<ans[i][j];
        cout<<endl;
    }
    return 0;
}

以上是关于1053 Path of Equal Weight (30 分)难度: 一般 / 树的遍历的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1053. Path of Equal Weight

PAT 1053 Path of Equal Weight (30)

1053 Path of Equal Weight

1053 Path of Equal Weight

PAT 1053. Path of Equal Weight (30)

PAT Advanced Level 1053 Path of Equal Weight