patadvancedlevel1053pathofequalweight(代码片段)

absolutelyperfect absolutelyperfect     2022-12-22     329

关键词:

1053 Path of Equal Weight (30)(30 分)

Given a non-empty tree with root R, and with weight W~i~ assigned to each tree node T~i~. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the path from R to any leaf node L.

Now given any weighted tree, you are supposed to find all the paths with their weights equal to a given number. For example, let‘s consider the tree showed in Figure 1: for each node, the upper number is the node ID which is a two-digit number, and the lower number is the weight of that node. Suppose that the given number is 24, then there exists 4 different paths which have the same given weight: 10 5 2 7, 10 4 10, 10 3 3 6 2 and 10 3 3 6 2, which correspond to the red edges in Figure 1.

技术分享图片 Figure 1

Input Specification:

Each input file contains one test case. Each case starts with a line containing 0 < N <= 100, the number of nodes in a tree, M (< N), the number of non-leaf nodes, and 0 < S < 2^30^, the given weight number. The next line contains N positive numbers where W~i~ (&lt1000) corresponds to the tree node T~i~. Then M lines follow, each in the format:

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

where ID is a two-digit number representing a given non-leaf node, K is the number of its children, followed by a sequence of two-digit ID‘s of its children. For the sake of simplicity, let us fix the root ID to be 00.

Output Specification:

For each test case, print all the paths with weight S in non-increasing order. Each path occupies a line with printed weights from the root to the leaf in order. All the numbers must be separated by a space with no extra space at the end of the line.

Note: sequence A~1~, A~2~, ..., A~n~ is said to be greater than sequence B~1~, B~2~, ..., B~m~ if there exists 1 <= k < minn, m such that A~i~ = B~i~ for i=1, ... k, and A~k+1~ > B~k+1~.

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

 

/**********************
author: yomi
date: 18.8.16
ps: 本来简单dfs就可以了, 但是要求路径序列要按照非递增顺序输出 这个我想了好一会儿
甚至想到暂存到string数组里 然后sort 结果这是不现实的 除非再搞个哈希 麻烦
再看看题 其实就是每次往下搜索时先选权值最大的 所以 我把每一个父结点下的孩子们都按照
从大到小排了个序。成功解决。
**********************/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

struct Node

    int data;
    int id;
    vector<Node>child;
node[150];
bool vis[150];
long long int sum = 0, weight;
vector<int>path;
int cnt = 0;
int cmp(Node a, Node b)

    return a.data>b.data;

void dfs(int index)

    if(node[index].child.size() == 0)
        if(sum == weight)
            for(int i=0; i<path.size()-1; i++)
                cout << path[i] <<  ;
            
            cout << path[path.size()-1] << endl;
        
        return;
    
    for(int i=0; i<node[index].child.size(); i++)
        int id = node[index].child[i].id;
        if(!vis[id])
            sum += node[id].data;
            path.push_back(node[id].data);
            dfs(id);
            sum -= node[id].data;
            path.pop_back();
        

    

int main()

    int m, n, t, num, d;
    cin >> m >> n >> weight;
    for(int i=0; i<m; i++)
        cin >> node[i].data;
        node[i].id = i;
    
    for(int i=0; i<n; i++)
        cin >> t >> num;
        for(int j=0; j<num; j++)
            cin >> d;
            node[t].child.push_back(node[d]);
        
        sort(node[t].child.begin(), node[t].child.end(), cmp);
    
    sum += node[0].data;
    path.push_back(node[0].data);
    vis[0] = true;
    dfs(0);

    return 0;

/**
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
**/

 

patadvancedlevel1095(代码片段)

ZhejiangUniversityhas6campusesandalotofgates.Fromeachgatewecancollectthein/outtimesandtheplatenumbersofthecarscrossingthegate.Nowwithalltheinformationavailable,youaresupposedtotell,atanyspecifictimepo 查看详情

patadvancedlevel1038(代码片段)

1038RecovertheSmallestNumber(30)(30分)Givenacollectionofnumbersegments,youaresupposedtorecoverthesmallestnumberfromthem.Forexample,given32,321,3214,0229,87,wecanrecovermanynumberssuchlike32-321-3214- 查看详情

patadvancedlevel1079(代码片段)

1079TotalSalesofSupplyChain(25)(25分)Asupplychainisanetworkofretailers(零售商),distributors(经销商),andsuppliers(供应商)--everyoneinvolvedinmovingaproductfromsuppliertocustomer.Startingfromonerootsupplier,every 查看详情

patadvancedlevel1063(代码片段)

1063SetSimilarity(25)(25分)Giventwosetsofintegers,thesimilarityofthesetsisdefinedtobeN~c~/N~t~*100%,whereN~c~isthenumberofdistinctcommonnumberssharedbythetwosets,andN~t~isthetotalnumberofdistinctnumber 查看详情

patadvancedlevel1022digitallibrary(代码片段)

1022DigitalLibrary(30)(30分)ADigitalLibrarycontainsmillionsofbooks,storedaccordingtotheirtitles,authors,keywordsoftheirabstracts,publishers,andpublishedyears.Eachbookisassignedanunique7-digitnumberasit 查看详情

patadvancedlevel1013battleovercities(25)(25分)(代码片段)

1013BattleOverCities(25)(25分)Itisvitallyimportanttohaveallthecitiesconnectedbyhighwaysinawar.Ifacityisoccupiedbytheenemy,allthehighwaysfrom/towardthatcityareclosed.Wemustknowimmediatelyifweneedtorepai 查看详情

patadvancedlevel1064completebinarysearchtree(30)(30分)(代码片段)

1064CompleteBinarySearchTree(30)(30分)ABinarySearchTree(BST)isrecursivelydefinedasabinarytreewhichhasthefollowingproperties:Theleftsubtreeofanodecontainsonlynodeswithkeyslessthanthenode‘skey.Therightsu 查看详情

Python:(Pathos)多处理与类方法

】Python:(Pathos)多处理与类方法【英文标题】:Python:(Pathos)Multiprocessingvs.classmethods【发布时间】:2015-05-2105:35:01【问题描述】:我正在尝试通过多处理使用类方法并行化代码。基本结构如下:#frommultiprocessingimportPoolfrompathos.mult... 查看详情

patadvancedlevel1145(代码片段)

愿明天的题难一点把我难倒然后寒假我就可以刷三遍甲级了这样榜上就会有权顺荣一刷权顺荣二刷权顺荣三刷还有权顺荣真是棒棒哒!!!深圳地铁prince,你听到了吗???(PS:犯什么呆萌?还不滚去刷题?)1145Hashing-AverageSearchTime(... 查看详情

pathos.multiprocessing 有星图吗?

】pathos.multiprocessing有星图吗?【英文标题】:Doespathos.multiprocessinghavestarmap?【发布时间】:2019-06-1620:45:04【问题描述】:执行以下代码时出现错误。问题似乎是map不支持采用多个输入的函数,就像在python内置的multiprocessing包中一... 查看详情

Pathos.multiprocessing 的池似乎是非本地的?

】Pathos.multiprocessing的池似乎是非本地的?【英文标题】:Pathos.multiprocessing\'sPoolappearstobenonlocal?【发布时间】:2018-09-2800:48:01【问题描述】:我的代码可以frompathos.multiprocessingimportProcessingPooldefmyFunc(something):thispool=ProcessingPool(no 查看详情

如何运行嵌套的、分层的 pathos 多处理地图?

】如何运行嵌套的、分层的pathos多处理地图?【英文标题】:Howtorunnested,hierarchicalpathosmultiprocessingmaps?【发布时间】:2017-02-2422:35:07【问题描述】:在我的dill序列化/酸洗代码中构建了重要部分后,我还尝试使用pathos多处理来并... 查看详情

使用“pathos.pools.ProcessPool”锁定的规范方法是啥?

】使用“pathos.pools.ProcessPool”锁定的规范方法是啥?【英文标题】:Whatisthecanonicalwaytouselockingwith`pathos.pools.ProcessPool`?使用“pathos.pools.ProcessPool”锁定的规范方法是什么?【发布时间】:2020-10-2421:44:06【问题描述】:让我们考虑... 查看详情

patadvancedlevel1003emergency(代码片段)

Asanemergencyrescueteamleaderofacity,youaregivenaspecialmapofyourcountry.Themapshowsseveralscatteredcitiesconnectedbysomeroads.Amountofrescueteamsineachcityandthelengthofeachroadbetweenanypairofcitiesaremarkedonthemap.Whenthereisanemergencycalltoyoufromsomeothercity,yourjobistoleadyourmentotheplacea... 查看详情

如何将关键字列表传递给 pathos.multiprocessing?

】如何将关键字列表传递给pathos.multiprocessing?【英文标题】:Howtopasskeywordslisttopathos.multiprocessing?【发布时间】:2017-02-0609:21:14【问题描述】:我正在使用pathos.multiprocessing来并行化需要使用实例方法的程序。这是一个最小的工作... 查看详情

pathos.ProcessingPool 和 pickle 之间的交互

】pathos.ProcessingPool和pickle之间的交互【英文标题】:Interactionbetweenpathos.ProcessingPoolandpickle【发布时间】:2016-11-1110:07:04【问题描述】:我有一个需要运行的计算列表。我正在使用将它们并行化frompathos.multiprocessingimportProcessingPoolpo... 查看详情

Pathos 无法腌制由 GDAL 模块创建的 SwigPyObject

】Pathos无法腌制由GDAL模块创建的SwigPyObject【英文标题】:Pathoscan\'tpickleSwigPyObjectcreatedbyGDALmodule【发布时间】:2018-12-1012:21:07【问题描述】:我有一个类,它使用GDAL模块(https://pypi.org/project/GDAL/)打开一个大型光栅图像,并在多个... 查看详情

多处理-> pathos.multiprocessing 和 windows

】多处理->pathos.multiprocessing和windows【英文标题】:multiprocessing->pathos.multiprocessingandwindows【发布时间】:2015-10-2208:30:52【问题描述】:我目前在python中使用标准的多处理来生成一堆将无限期运行的进程。我并不特别关心性能... 查看详情