在一片神秘的森林中,有一座古老的迷宫,连接着 nn 个魔法节点,节点编号从 11 到 nn。这些节点通过 n−1n−1 条双向魔法路径相连,形成一个树形结构(无环连通图)。冒险者需要从起点节点 ss 出发,找到一条通往终点节点 tt 的路线。每条路径都有独特的魔法属性:从节点 uu 到节点 vv 可以获得 pp 分,从节点 vv 到节点 uu 可以获得 qq 分(pp 和 qq 可以是正数、负数或零)。然而,迷宫的魔法规则限制每条路径的每个方向(u→vu→v 或 v→uv→u)最多只能走一次。你的任务是规划一条从节点 ss 到节点 tt 的路线,使得总得分最大。请你求出这个最大的总得分。
为了防止输入过大带来的常数问题,C++ 选手请尽量使用关闭流同步的 std::cin 和 std::cout 实现输入输出,否则可能出现因读入输出问题导致的 TLE 等。
int main(){ std::ios::sync_with_stdio(0); std::cin.tie(0); // your code return 0; }
第一行一个整数 TT (1≤T≤106)(1≤T≤106),表示测试数据组数。
每组数据的第一行包含一个整数 nn (2≤n≤105)(2≤n≤105),表示节点数量。
接下来 n−1n−1 行,每行包含四个整数 u,v,p,qu,v,p,q (1≤u,v≤n,u≠v,−109≤p,q≤109)(1≤u,v≤n,u=v,−109≤p,q≤109),表示一条连接节点 uu 和 vv 的路径,从 uu 到 vv 的得分为 pp,从 vv 到 uu 的得分为 qq。
接下来一行,包含两个整数 s,ts,t (1≤s,t≤n)(1≤s,t≤n),表示起点和终点的编号。
保证所有测试数据的 nn 之和不超过 106106。
3
4
1 2 5 2
2 3 -1 3
3 4 4 -2
1 4
5
1 4 1 -10
2 1 -3 -8
4 3 7 -1
1 5 4 7
1 5
6
4 3 -2 3
5 6 -10 10
6 2 -3 7
1 6 10 -5
1 3 -6 1
5 4
8
4
-14