QOJ.ac

QOJ

Limite de temps : 12 s Limite de mémoire : 512 MB Points totaux : 100

#6877. 龙之印记

Statistiques

一只永生的龙袭击了字节大陆。经过数日的战斗,英雄们终于击败了龙。然而,龙是不死的,无法被彻底杀死,因此字节大陆的魔法师们决定使用古老的黑魔法将龙封印。

龙将被封印在一棵包含 $n$ 个顶点的无向魔法树下。树的每个顶点上都有两颗宝石。每颗宝石都有一个魔力值 $m$ 和一个能量值 $p$。黑魔法要求从每个顶点中恰好移除一颗宝石,使得每个顶点恰好剩下一颗宝石。总能量为树中剩余的所有宝石的能量值之和。

为了从封印中逃脱,龙有机会发动攻击。它会选择树上的一个目标顶点,然后选择该顶点及其邻居顶点中的一部分,并对它们发动攻击。如果至少有一个顶点被攻击,且所有被攻击顶点中剩余宝石的魔力值按位异或和等于零,则封印会被破坏,龙就会逃脱。魔法师们绝不能让这种情况发生。

请编写一个程序,帮助他们确定如何选择宝石,使得龙永远无法逃脱,并使总能量最大化。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试用例的数量。对于每个测试用例:

第一行包含一个整数 $n$ ($2 \le n \le 60$),表示顶点的数量。

接下来的 $n$ 行中,第 $i$ 行包含四个整数 $m_i, p_i, m'_i$ 和 $p'_i$ ($1 \le m_i, m'_i < 2^{64}$, $1 \le p_i, p'_i \le 10^7$),描述第 $i$ 个顶点上的两颗宝石。

接下来的 $n - 1$ 行,每行包含两个整数 $u_i$ 和 $v_i$ ($1 \le u_i, v_i \le n, u_i \neq v_i$),描述 $u_i$ 号顶点和 $v_i$ 号顶点之间的一条无向边。

保证输入是一棵树。

输出格式

对于每个测试用例,输出一行,包含一个整数,表示封印龙的总能量。如果无法封印龙,请输出“-1”。

样例

样例输入 1

2
2
3 1 3 1
3 2 3 2
1 2
3
1 3 2 1
2 2 4 3
1 3 3 2
1 2
2 3

样例输出 1

-1
8

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.