Problem G

Statement
Copy Copied
Description:
An edge-weighted tree of $$$n$$$ nodes is given with each edge colored in some color. Each node of this tree can be blocked or unblocked, all nodes are unblocked initially.

A simple path is a path in a graph that does not have repeating nodes. The length of a path is defined as the sum of weights of all edges on the path.

A path is good when it is a simple path consisting of edges of the same color $$$c$$$, all edges of color $$$c$$$ are on this path, and every node on the path is unblocked.

You need to operate $$$2$$$ kinds of queries:

1. block a node,
2. unblock a node.

After each query, print the maximum length among all good paths. If there are no good paths, print $$$0$$$.

Input Format:
The first line contains two integers $$$n$$$, $$$q$$$ ($$$1 \leq n,q \leq 2\cdot 10^5$$$) β€” the number of nodes and the number of queries.

Then $$$n-1$$$ lines follow, each containing four integers $$$u$$$, $$$v$$$, $$$w$$$ and $$$c$$$ ($$$1 \leq u,v,w,c \leq n$$$; $$$u \not = v$$$), denoting a weighted edge connecting node $$$u$$$ and node $$$v$$$ with weight $$$w$$$ and color $$$c$$$. It is guaranteed that these edges form a tree.

Then $$$q$$$ lines follow, each containing two integers $$$p$$$ and $$$x$$$ ($$$p = 0$$$ or $$$p = 1$$$, $$$1\leq x\leq n$$$), denoting a query:

1. if $$$p = 0$$$, block the node $$$x$$$. It's guaranteed that it's not blocked at this time;
2. if $$$p = 1$$$, unblock the node $$$x$$$. It's guaranteed that it's blocked at this time.

Output Format:
For each query, print the maximum length of a good path. If there are no good paths, print $$$0$$$.

Note:
None