Submission
# | When | Author | Problem | Language | CPU | Memory | |
---|---|---|---|---|---|---|---|
20841 | 2024-06-09 09:30:00 | AHAMMED_99 | Game on Tree - I | Python 2 | 11 ms | 7504 kb | Runtime Error - 1 |
Source Code
from collections import defaultdict def dfs(node, parent, graph, weights, subtree_sum): subtree_sum[node] = weights[node] for neighbor in graph[node]: if neighbor != parent: subtree_sum[node] += dfs(neighbor, node, graph, weights, subtree_sum) return subtree_sum[node] def calculate_subtree_sums(graph, weights, N): subtree_sum = defaultdict(int) dfs(1, -1, graph, weights, subtree_sum) return subtree_sum def main(): N, Q = map(int, input().split()) weights = list(map(int, input().split())) # Initialize the tree as an adjacency list graph = defaultdict(list) for _ in range(N - 1): A, B = map(int, input().split()) graph[A].append(B) graph[B].append(A) # Calculate subtree sums subtree_sum = calculate_subtree_sums(graph, weights, N) # Process queries for _ in range(Q): U, V = map(int, input().split()) print(subtree_sum[U] - subtree_sum[V]) if __name__ == "__main__": main()