1106 Lowest Price in Supply Chain(二刷)

题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805362341822464

大致题意就是求叶子节点的最小点权,并统计其个数。

一刷:1106 Lowest Price in Supply Chain

 1 #include<iostream>
 2 #include<vector>
 3 #include<unordered_map>
 4 using namespace std;
 5 
 6 vector<vector<int> > tree; //动态二维数组 
 7 unordered_map<double,int> mp;
 8 double minPrice = 0x3fffffff;
 9 int cnt = 0;
10 void DFS(int now,double price,double r) {
11     if(tree[now].size() == 0 && price <= minPrice) {
12         minPrice = price;
13         mp[minPrice]++;
14     } else {
15         for(int i = 0; i < tree[now].size(); ++i)
16             DFS(tree[now][i],price+price*r,r);
17     }
18 }
19 int main() {
20     int n,k,child;
21     double p,r;
22     cin>>n>>p>>r;
23     r /= 100;
24     tree.resize(n);
25     for(int i = 0; i < n; ++i) {
26         cin>>k;
27         for(int j = 0; j < k; ++j) {
28             cin>>child;
29             tree[i].push_back(child);
30         }
31     }
32     DFS(0,p,r);
33     printf("%.4f %d",minPrice,mp[minPrice]);
34     return 0;
35 }

 

posted @ 2020-03-25 16:29  tangq123  阅读(117)  评论(0编辑  收藏  举报