You are given an integer n and an undirected tree with n nodes numbered from 0 to n - 1. This is represented by a 2D array edges of length n - 1, where edges[i] = [ui, vi] indicates an undirected edge between nodes ui and vi.
You are also given an integer array group of length n, where group[i] denotes the group label assigned to node i.
u and v are considered part of the same group if group[u] == group[v].u and v is defined as the number of edges on the unique path connecting them in the tree.Return an integer denoting the sum of interaction costs over all unordered pairs (u, v) with u != v such that group[u] == group[v].
Example 1:
Input: n = 3, edges = [[0,1],[1,2]], group = [1,1,1]
Output: 4
Explanation:

All nodes belong to group 1. The interaction costs between the pairs of nodes are:
(0, 1): 1(1, 2): 1(0, 2): 2Thus, the total interaction cost is 1 + 1 + 2 = 4.
Example 2:
Input: n = 3, edges = [[0,1],[1,2]], group = [3,2,3]
Output: 2
Explanation:
Example 3:
Input: n = 4, edges = [[0,1],[0,2],[0,3]], group = [1,1,4,4]
Output: 3
Explanation:

Nodes belonging to the same groups and their interaction costs are:
(0, 1): 1(2, 3): 2Thus, the total interaction cost is 1 + 2 = 3.
Example 4:
Input: n = 2, edges = [[0,1]], group = [9,8]
Output: 0
Explanation:
All nodes belong to different groups and there are no valid pairs. Therefore, the total interaction cost is 0.
Constraints:
1 <= n <= 105edges.length == n - 1edges[i] = [ui, vi]0 <= ui, vi <= n - 1group.length == n1 <= group[i] <= 20edges represents a valid tree.Problem Overview: You are given nodes organized as a tree and an array describing which group each node belongs to. The interaction cost between two nodes is the distance along the tree. The goal is to compute the total cost across all pairs of nodes that belong to the same group.
Approach 1: Pairwise Distance with LCA (Brute Force) (Time: O(k^2 log n), Space: O(n))
Group nodes by their group id using a hash map. For each group, iterate over every pair of nodes and compute their tree distance using a Lowest Common Ancestor structure such as binary lifting. The distance formula is dist(u,v) = depth[u] + depth[v] - 2 * depth[lca(u,v)]. This approach is easy to implement after building the LCA preprocessing in O(n log n). The downside is the quadratic pair iteration inside each group, which becomes too slow when a group contains many nodes.
Approach 2: DFS Subtree Aggregation (Optimal) (Time: O(n log n), Space: O(n))
Use a depth-first traversal of the tree and maintain frequency maps that track how many nodes of each group appear inside the current subtree. When processing an edge between a node and its child, the edge contributes to the distance between any pair of nodes whose path crosses that edge. If a group has a nodes in the child subtree and b nodes outside it, that edge contributes a * b to the total distance for that group.
During DFS, each node returns a map {group -> count} representing how many nodes of each group exist in its subtree. Merge child maps into the parent map using the small-to-large merging technique to keep the complexity under control. While merging, update the global interaction cost using the edge contribution formula. Small-to-large ensures each element moves only O(log n) times, giving overall O(n log n) time.
This method leverages the structure of a tree and processes every edge exactly once while maintaining group counts discovered via depth-first search. The grouping information originates from the input array, but the heavy work happens during the DFS aggregation.
Recommended for interviews: The DFS subtree aggregation approach is the expected solution. Interviewers want to see whether you can translate pairwise distance calculations into edge contributions on a tree. Starting with the brute-force pair approach shows understanding of the distance formula, but optimizing with DFS aggregation demonstrates strong tree and counting techniques.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| Pairwise Distance with LCA | O(k^2 log n) | O(n) | Small groups or quick prototype solution |
| DFS Subtree Aggregation with Map Merging | O(n log n) | O(n) | General optimal solution for large trees and many groups |
| Small-to-Large Map Merging Optimization | O(n log n) | O(n) | Efficient when many group ids appear across subtrees |
Leetcode 3786 | Total Sum of Interaction Cost in Tree Groups • CodeWithMeGuys • 696 views views
Watch 3 more video solutions →Practice Total Sum of Interaction Cost in Tree Groups with our built-in code editor and test cases.
Practice on FleetCode