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");

}

 

posted on 2017-08-29 16:47  wsggb123  阅读(88)  评论(0)    收藏  举报

导航