#P17773. 挑战 NPC IV
挑战 NPC IV
题目描述
在计算机科学中,NP 完全(NP-Complete,简称 NPC)问题是一类兼具理论深度与求解难度的经典问题——目前尚未找到它们的多项式时间算法,但一旦其中任何一个问题被攻克,所有的 NP 问题都将迎刃而解。
热衷于算法研究的小 W 一直梦想着挑战 NPC 问题。他了解到,图论中著名的“最大公共诱导子图问题”正是经典的 NPC 问题。面对一般图上难以逾越的复杂度鸿沟,小 W 决定退一步,先从结构更为优美的树入手,研究树上的同构连通子图问题。
具体而言,给定两棵均包含 个节点的无根树 和 ,两棵树的节点均分别编号为 。小 W 希望在 中选出一个非空节点子集 ,并在 中选出一个非空节点子集 ,同时保留各自集合内部节点在原树中的所有原有边,从而分别导出两个子图 和 。
小 W 要求导出的两个子图 必须同时满足:
- 连通性: 和 均为连通图(特别地,仅包含 个节点的图也视为连通)。
- 同构性: 与 同构。即存在一个从 到 的双射(一一对应关系),使得对于任意 , 与 在 中有边相连,当且仅当 与 在 中有边相连。注意:相互对应的节点 和 不要求编号相同。
现在,小 W 将这个简化后的问题交给了你:请计算满足上述要求的同构连通子图最多可以包含多少个节点(即求 的最大值)?
输入格式
从标准输入读入数据。
第一行包含一个正整数 ,表示每棵树的节点数量。
接下来 行,每行包含两个正整数 ,表示树 中的一条无向边 。
接下来 行,每行包含两个正整数 ,表示树 中的一条无向边 。
输出格式
输出到标准输出。
输出一行一个正整数,表示选出的同构连通子图的最大节点数。
4
1 2
2 3
3 4
1 2
1 3
1 4
3
提示
样例 1 解释
在 中选择节点集合 ,在 中选择节点集合 。将 中的节点 依次对应到 中的节点 ,导出的两个子图均为包含 个节点的链,满足连通且同构。
由于 本身是一条链,其任意连通子图也必然是一条链;而菊花图 中最长的链仅包含 个节点,因此无法选出节点数超过 的同构连通子图。
样例 2
见题目附件中的 npc/npc2.in 与 npc/npc2.ans。
该样例满足子任务 的约束条件。
样例 3
见题目附件中的 npc/npc3.in 与 npc/npc3.ans。
该样例满足子任务 的约束条件。
样例 4
见题目附件中的 npc/npc4.in 与 npc/npc4.ans。
该样例满足子任务 的约束条件。
子任务
对于全部数据,保证 ,每条边的两端点编号均在 之间,且给出的两张图均为合法的树。
本题满分为 分,采用子任务捆绑测试。只有通过一个子任务中的全部测试点,才能获得该子任务的分数。各子任务的详细数据范围见下表。
| 子任务编号 | 特殊性质 | 分值 | |
|---|---|---|---|
| 无 | |||
| A | |||
| B | |||
| C | |||
| 无 |
特殊性质 A:两棵树中所有节点的度数均不超过 。
特殊性质 B:存在一种最优方案,其同构映射将 的节点 对应到 的节点 。
特殊性质 C:保证最终答案不小于 。
注:树中一个节点的度数是指与该节点直接相连的边的数量。