Score of a Tree
Contest: Codeforces Round 845 (Div. 2) and ByteRace 2023
Difficulty rating: 1900
Tags: bitmasks, combinatorics, dfs and similar, dp, math, probabilities, trees

You are given a tree of $$$n$$$ nodes, rooted at $$$1$$$. Every node has a value of either $$$0$$$ or $$$1$$$ at time $$$t=0$$$.

At any integer time $$$t>0$$$, the value of a node becomes the bitwise XOR of the values of its children at time $$$t - 1$$$; the values of leaves become $$$0$$$ since they don't have any children.

Let $$$S(t)$$$ denote the sum of values of all nodes at time $$$t$$$.

Let $$$F(A)$$$ denote the sum of $$$S(t)$$$ across all values of $$$t$$$ such that $$$0 \le t \le 10^{100}$$$, where $$$A$$$ is the initial assignment of $$$0$$$s and $$$1$$$s in the tree.

The task is to find the sum of $$$F(A)$$$ for all $$$2^n$$$ initial configurations of $$$0$$$s and $$$1$$$s in the tree. Print the sum modulo $$$10^9+7$$$.

Input format:
Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^5$$$). The description of the test cases follows.

The first line of each test case contains $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of nodes in the tree.

The next $$$n-1$$$ lines of each test case contain two integers each — $$$u$$$, $$$v$$$ indicating an edge between $$$u$$$ and $$$v$$$ ($$$1 \le u, v \le n$$$).

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$.

Output format:
Output the sum modulo $$$10^9+7$$$ for each test case.

Constraints:
Time limit: 2.0 s
Memory limit: 512.0 MB

Note:
Let us find $$$F(A)$$$ for the configuration $$$A = [0,1,0,0,1,1]$$$ ($$$A[i]$$$ denotes the value of node $$$i$$$). Initially (at $$$t = 0$$$) our tree is as shown in the picture below. In each node, two values are shown: the number and the value of this node. $$$S(0)$$$ for this configuration is $$$3$$$.

At $$$t = 1$$$ the configuration changes to $$$[1,0,0,0,0,0]$$$. The tree looks as shown below. $$$S(1) = 1$$$.

At $$$t = 2$$$ the configuration changes to $$$[0,0,0,0,0,0]$$$. The tree looks as shown below. $$$S(2) = 0$$$.

For all $$$t>2$$$, the graph remains unchanged, so $$$S(t)=0$$$ for all $$$t > 2$$$. So, for the initial configuration $$$A = [0,1,0,0,1,1]$$$, the value of $$$F(A) = 3 + 1 = 4$$$.

Doing this process for all possible $$$2^{6}$$$ configurations yields us an answer of $$$\textbf{288}$$$.

Example input:
1
6
1 2
1 3
3 4
3 5
3 6

Example output:
288

Editorial:
We will focus on computing the expected value of $$$F(A)$$$ rather than the sum, as the sum is just $$$2^n \times \mathbb{E}(F(A))$$$.
Let $$$F_u(A)$$$ denote the sum of all values at node $$$u$$$ from time $$$0$$$ to $$$10^{100}$$$, if the initial configuration is $$$A$$$.
Clearly, $$$F(A) = \sum {F_u(A)}$$$.
With linearity of expectations,
$$$\mathbb{E}(F(A)) = \sum {\mathbb{E}(F_u(A))}$$$
Define $$$V_u(A, t)$$$ as the value of node $$$u$$$ at time $$$t$$$, if the initial configuration is $$$A$$$.
Observe that $$$V_u(A, t)$$$ is simply $$$0$$$ if there is no node in $$$u$$$'s subtree at a distance of $$$t$$$ from $$$u$$$, otherwise, the value is the bitwise xor of the initial values of all nodes in the subtree of $$$u$$$ at a distance of $$$t$$$ from $$$u$$$.
Thus, define $$$d_u$$$ as the length of the longest path from $$$u$$$ to a leaf in $$$u$$$'s subtree. Now, $$$\mathbb{E}(V_u(A, t))$$$ is half if $$$t$$$ is less than or equal to $$$d_u$$$, otherwise it's $$$0$$$. This is because the expected value of xor of $$$k$$$ boolean values is $$$0$$$ is $$$k$$$ is zero, otherwise it's half. This fact has multiple combinatorial proofs. For example, one can simply count the number of ways of choosing odd number of boolean values, among the $$$k$$$ values as $$$1$$$ to get $$$\sum_{\text{odd i}}{\binom{k}{i}} = 2^{k-1}$$$
We use this to get: $$$$$$ \mathbb{E}(F_u(A)) = \mathbb{E}(\sum_{0}^{10^{100}}{V_u(A, t)}) = \sum_{0}^{10^{100}}{\mathbb{E}(V_u(A, t)} = \frac{d_u + 1}{2} $$$$$$
All the $$$d_u$$$ values can be computed by a single traversal of the tree.
Our final result is:
$$$2^n \times \sum{ \frac{d_u + 1}{2} }$$$
Time complexity: $$$\mathcal{O}(n)$$$