1090. Highest Price in Supply Chain (25)
DFS 不难
#include<iostream> #include<string> #include<map> #include<vector> #include<algorithm> #include<queue> #include<set> #include<stack> using namespace std; const int inf = 99999999; struct node { double price=0; vector<int> child; }; node *arr = new node[100001]; int num; double p, r; void dfs(int root) { for (int i = 0; i < arr[root].child.size(); i++) { //cout << arr[root].price*(1 + r / 100); arr[arr[root].child[i]].price = arr[root].price*(1 + r / 100); dfs(arr[root].child[i]); } } int main() { cin >> num >> p >> r; int root; for (int i = 0; i < num; i++) { int temp; cin >> temp; if (temp == -1) { arr[i].price = p; root = i; } else arr[temp].child.push_back(i); } dfs(root); double maxn = 0; int c = 0; for (int i = 0; i < num; i++) { if (arr[i].child.size() == 0) { if (arr[i].price > maxn) { maxn = arr[i].price; c = 1; } else if (arr[i].price == maxn) { c++; } } } printf("%.2f %d", maxn, c); system("pause"); }