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 }