Submission
# | When | Author | Problem | Language | CPU | Memory | |
---|---|---|---|---|---|---|---|
20852 | 2024-06-12 23:37:30 | AHAMMED_99 | Bonus Project | C++ 14 | 20 ms | 3360 kb | Wrong Answer - 1 |
Source Code
#include <iostream> #include <vector> #include <queue> using namespace std; void processTestCase(int N, int Q, vector<int>& initialBalances, vector<pair<int, int>>& hierarchy, vector<pair<int, int>>& projects) { vector<vector<int>> subordinates(N + 1); vector<int> finalBalances = initialBalances; // Build the hierarchy tree for (auto& h : hierarchy) { int A = h.first, B = h.second; subordinates[A].push_back(B); } // Process each project for (auto& project : projects) { int X = project.first, Y = project.second; queue<int> q; q.push(X); // Distribute bonuses while (!q.empty()) { int leader = q.front(); q.pop(); if (leader == X) { finalBalances[leader - 1] += 2 * Y; } else { finalBalances[leader - 1] += Y; } for (int sub : subordinates[leader]) { q.push(sub); } } } // Print final balances for (int i = 0; i < N; ++i) { cout << finalBalances[i] << (i == N - 1 ? "\n" : " "); } } int main() { int T; cin >> T; while (T--) { int N, Q; cin >> N >> Q; vector<int> initialBalances(N); for (int i = 0; i < N; ++i) { cin >> initialBalances[i]; } vector<pair<int, int>> hierarchy(N - 1); for (int i = 0; i < N - 1; ++i) { cin >> hierarchy[i].first >> hierarchy[i].second; } vector<pair<int, int>> projects(Q); for (int i = 0; i < Q; ++i) { cin >> projects[i].first >> projects[i].second; } processTestCase(N, Q, initialBalances, hierarchy, projects); } return 0; }