首页 > 其他分享 >1053 等重路径

1053 等重路径

时间:2023-04-21 23:44:58浏览次数:36  
标签:10 1053 权重 int 路径 ID n2 节点

给定一个非空的树,树根为 R。

树中每个节点 Ti 的权重为 Wi。

从 R 到 L 的路径权重定义为从根节点 R 到任何叶节点 L 的路径中包含的所有节点的权重之和。

现在给定一个加权树以及一个给定权重数字,请你找出树中所有的权重等于该数字的路径(必须从根节点到叶节点)。

例如,我们考虑下图的树,对于每个节点,上方的数字是节点 ID,它是两位数字,而下方的数字是该节点的权重。

假设给定数为 24,则存在 4 个具有相同给定权重的不同路径:{10 5 2 7},{10 4 10},{10 3 3 6 2},{10 3 3 6 2}, 已经在图中用红色标出。

212.jpg

输入格式

第一行包含三个整数 N,M,S,分别表示树的总节点数量,非叶子节点数量,给定权重数字。

第二行包含 N 个整数 Wi,表示每个节点的权重。

接下来 M 行,每行的格式为:

ID K ID[1] ID[2] ... ID[K]

ID 是一个两位数字,表示一个非叶子结点编号,K 是一个整数,表示它的子结点数,接下来的 K 个 ID[i] 也是两位数字,表示一个子结点的编号。

出于方便考虑,根节点固定为 00,且树中所有节点的编号为 00∼N−1。

输出格式

单调递减的顺序输出所有权重为S的路径。

每个路径占一行,从根节点到叶节点按顺序输出每个节点的权重。

注意:我们称 A 序列 {A1,A2,…,An} 大于 B 序列 {B1,B2,…,Bm},当且仅当存在一个整数 k,1≤k<min(n,m),对于所有 1≤i≤k,Ai=Bi 成立,并且 Ak+1>Bk+1。

数据范围

1≤N≤100
0≤M<N,
0<S<230,
0<Wi<1000

输入样例:

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

输出样例:

10 5 2 7
10 4 10
10 3 3 6 2
10 3 3 6 2

代码实现:

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const int N=105;
vector<int>v[N];
vector<string>res;
vector<vector<int> >res1;
int n,m,S,w[N];
bool cmp(vector<int>a,vector<int>b){
    for(int i=0;i<a.size()&&i<b.size();i++){
        if(a[i]!=b[i])return a[i]>b[i];
    }
    return a.size()>b.size();
}
struct node{
    int x;
    vector<int>v1;
    int dis;
};
void bfs(int x){
    queue<node>q;
    vector<int>v1;
    v1.push_back(x);
    node n1={x,v1,w[x]};
    q.push(n1);
    while(q.size()){
        node n2=q.front();
        q.pop();
        if(n2.dis==S&&v[n2.x].size()==0){
            vector<int>v3;
            for(int i=0;i<n2.v1.size();i++)v3.push_back(w[n2.v1[i]]);
            res1.push_back(v3);
            continue;
        }
        for(int i=0;i<v[n2.x].size();i++){
            vector<int>v2=n2.v1;
            v2.push_back(v[n2.x][i]);
            node n3={v[n2.x][i],v2,n2.dis+w[v[n2.x][i]]};
            q.push(n3);
        }
    }
}
int main(){
    cin>>n>>m>>S;
    for(int i=0;i<n;i++)cin>>w[i];
    while(m--){
        string x;
        int k;
        cin>>x>>k;
        while(k--){
            string y;
            cin>>y;
            v[stoi(x)].push_back(stoi(y));
        }
    }
    bfs(0);
    sort(res1.begin(),res1.end(),cmp);
    for(int i=0;i<res1.size();i++){
        for(int j=0;j<res1[i].size();j++){
            if(j==0)cout<<res1[i][j];
            else cout<<" "<<res1[i][j];
        }
        cout<<endl;
    }
    return 0;
}

 

标签:10,1053,权重,int,路径,ID,n2,节点
From: https://www.cnblogs.com/hxss/p/17342238.html

相关文章

  • MFC-SHGetSpecialFolderPath获取指定的系统路径
     CStringstr;TCHARpath[MAX_PATH];BOOLb=SHGetSpecialFolderPath(NULL,path,CSIDL_PROGRAM_FILES_COMMONX86,0);//获取指定的系统路径/*参数1:HWNDhwndOwner窗口所有者的句柄。可以NULL参数2:LPTSTRlpszPath返回路径的缓冲区,该缓......
  • CSS3: 利用分层动画让元素沿弧形路径运动
    译者注:部分代码示例中可以看效果(作者写在博文里面了…),我偷懒把它做成Gif图了。 CSS的animations(动画)和transitions(变换)擅于实现从点A到点B的直线运动,运动轨迹是直线路径。给一个元素添加了animation或者transition以后,无论你如何调整贝塞尔曲线,都无法让它沿着弧形路......
  • 用C#写一个上传下载文件至OSS后返回文件路径用DES加密解密
    废话不多说,直接上代码:usingAliyun.OSS;//引入阿里云OSSSDKusingSystem;usingSystem.IO;usingSystem.Security.Cryptography;//引入.NETFramework中的加密库usingSystem.Text;publicclassOSSHelper{///<summary>///将文件上传至OSS,并使用D......
  • Aras学习笔记 (53) - 根据ID快速找到文件Vault路径
    Step1:首先在对象类File中根据名称找到ID;Step2:右键文件-->Share-->CopyID;Step3:在Console中输入下命令:top.aras.IomInnovator.getFileUrl("[文件ID]",top.aras.Enums.UrlType.SecurityToken)结果如下: ......
  • POJ3984 迷宫问题(BFS 记忆路径)
    迷宫问题TimeLimit:1000MS     MemoryLimit:65536KB     64bitIOFormat:%I64d&%I64uSubmit Status Practice POJ3984SystemCrawler (2014-09-11)Description定义一个二维数组: intmaze[5][5]={0,1,0,0......
  • CF 580C- Kefa and Park, 1500 / 树的遍历 / 根节点到叶节点的路径上某性质的点不能
    CF580C-KefaandPark这个1500的题这么水?这还不如1200、1300的思维题我开始没考虑周全,这题给出的连边没有讲都是从父节点连向子节点,所有要建双边。#include<iostream>#include<cstring>usingnamespacestd;constintN=1e5+10,M=N*2;typedeflonglon......
  • ingress nginx匹配某个固定路径
    这个Ingress资源使用的是NginxIngressController,要将path配置为/third/factory/device/healthcheck的location,可以在annotations中添加如下配置:nginx.ingress.kubernetes.io/rewrite-target:/$2然后在rules.http.paths中使用以下方式配置:-path:/third(/factory/de......
  • uniapp h5与app接口路径
      h5版本前面带不带‘/’都不会报错接口路径拼接前应该有逻辑默认补'/'app后就会报错 ......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定目录下的所有文件的 文件路径、
    需求:用shell写一段代码,要求获取指定目录下的所有文件的文件路径、文件名、文件创建时间,文件最后修改时间,并将结果导出到指定路径的csv格式文件中以下是使用Shell实现获取指定目录下所有文件的路径、名称、创建时间和修改时间,并将结果导出到CSV文件的示例代码:点击查看代......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定路径下所有的文件夹,并统计每个
    需求:用shell写一段代码,要求获取指定路径下所有的文件夹,并统计每个文件夹所包含的文件个数,将文件路径,包含的文件数输出到指定路径的CSV格式文件中以下是使用Shell实现获取指定路径下所有文件夹,并统计每个文件夹中包含的文件个数,并将结果导出到CSV文件的示例代码:点击查看......