Loading...
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
Test Cases
# CPU Memory Points
1 11 ms 7504 kb 0 Runtime Error
2 0 ms 0 kb 0 Skipped
3 0 ms 0 kb 0 Skipped
4 0 ms 0 kb 0 Skipped
5 0 ms 0 kb 0 Skipped
6 0 ms 0 kb 0 Skipped
7 0 ms 0 kb 0 Skipped
Source Code
  1. from collections import defaultdict
  2.  
  3. def dfs(node, parent, graph, weights, subtree_sum):
  4. subtree_sum[node] = weights[node]
  5. for neighbor in graph[node]:
  6. if neighbor != parent:
  7. subtree_sum[node] += dfs(neighbor, node, graph, weights, subtree_sum)
  8. return subtree_sum[node]
  9.  
  10. def calculate_subtree_sums(graph, weights, N):
  11. subtree_sum = defaultdict(int)
  12. dfs(1, -1, graph, weights, subtree_sum)
  13. return subtree_sum
  14.  
  15. def main():
  16. N, Q = map(int, input().split())
  17. weights = list(map(int, input().split()))
  18.  
  19. # Initialize the tree as an adjacency list
  20. graph = defaultdict(list)
  21. for _ in range(N - 1):
  22. A, B = map(int, input().split())
  23. graph[A].append(B)
  24. graph[B].append(A)
  25.  
  26. # Calculate subtree sums
  27. subtree_sum = calculate_subtree_sums(graph, weights, N)
  28.  
  29. # Process queries
  30. for _ in range(Q):
  31. U, V = map(int, input().split())
  32. print(subtree_sum[U] - subtree_sum[V])
  33.  
  34. if __name__ == "__main__":
  35. main()
  36.