P16070 [ICPC 2023 NAC] A Tree and Two Edges

Description

Given a connected simple graph (with at most one edge between any pair of nodes) with $ n $ nodes and $ n + 1 $ edges (that’s a tree with two extra edges), answer a list of queries: for two distinct nodes, how many simple paths are there between them? A simple path is a path that does not repeat nodes.

Input Format

The first line of input contains two integers $ n $ ($ 4 \le n \le 5 \times 10^4 $) and $ q $ ($ 1 \le q \le 5 \times 10^4 $), where $ n $ is the number of nodes and $ q $ is the number of queries. The nodes are numbered from $ 1 $ to $ n $. Each of the next $ n + 1 $ lines contains two integers $ a $ and $ b $ ($ 1 \le a < b \le n $) indicating that there is an edge in the graph between nodes $ a $ and $ b $. All edges are distinct. Each of the next $ q $ lines contains two integers $ u $ and $ v $ ($ 1 \le u < v \le n $). This is a query for the number of simple paths between nodes $ u $ and $ v $.

Output Format

Output $ q $ lines. On each line output a single integer, which is the number of simple paths between the query nodes. Output the answers to the queries in the order they appear in the input.