Valkyrie006

Untitled

Nov 24th, 2021 (edited)
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. void dfs(int u, int p, vector<int> &leaf, vector<vector<int>> &G)
  2. {
  3.     if (G[u].size() == 1)
  4.     {
  5.         leaf.push_back(u);
  6.     }
  7.     for (int v : G[u])
  8.     {
  9.         if (v == p)
  10.             continue;
  11.         dfs(v, u, leaf, G);
  12.     }
  13. }
  14.  
  15. int ans;
  16.  
  17. int dfs1(int u, int p, int mul, vector<int> &nodeVal, vector<int> &leaf, vector<vector<int>> &G)
  18. {
  19.     if (p != -1 && binary_search(leaf.begin(), leaf.end(), u))
  20.     {
  21.         ans = max(ans, mul);
  22.     }
  23.     for (int v : G[u])
  24.     {
  25.         if (v == p)
  26.             continue;
  27.         dfs1(v, u, mul * nodeVal[u], nodeVal, leaf, G);
  28.     }
  29. }
  30.  
  31. void solve()
  32. {
  33.     int n;
  34.     cin >> n;
  35.     vector<int> nodeVal(n);
  36.     for (int i = 0; i < n; i++)
  37.     {
  38.         cin >> nodeVal[i];
  39.     }
  40.     int x, y;
  41.     cin >> x >> y;
  42.     vector<vector<int>> edges(n - 1);
  43.     for (int i = 0; i < n - 1; i++)
  44.     {
  45.         int u;
  46.         int v;
  47.         cin >> u >> v;
  48.         edges[i] = {u, v};
  49.     }
  50.     int N = nodeVal.size();
  51.     ans = INT_MIN;
  52.     vector<vector<int>> G(N);
  53.     for (int i = 0; i < edges.size(); i++)
  54.     {
  55.         int u = edges[i][0] - 1;
  56.         int v = edges[i][1] - 1;
  57.         G[u].push_back(v);
  58.         G[v].push_back(u);
  59.     }
  60.     vector<int> leaf;
  61.     dfs(0, -1, leaf, G);
  62.  
  63.     see(leaf);
  64.  
  65.     sort(leaf.begin(), leaf.end());
  66.     ans = INT_MIN;
  67.     for (int i = 0; i < leaf.size(); i++)
  68.     {
  69.         dfs1(leaf[i], -1, nodeVal[leaf[i]], nodeVal, leaf, G);
  70.     }
  71.     cout << ans << endl;
  72. }
Add Comment
Please, Sign In to add comment