P6963 [NEERC 2017] Laminar Family
题目描述
在研究组合优化时,Lucas 遇到了“层状集合族”的概念。对于某个集合 $\Omega$ 的子集族 $F$,如果它不包含空集,并且对于任何两个不同的集合 $A, B \in F$,要么 $A \subset B$,要么 $B \subset A$,要么 $A \cap B = \emptyset$,则称其为层状集合族。
作为一名经验丰富的题目设计者,Lucas 总是尝试将他获得的每一项新知识应用于编程竞赛题目。他的科学兴趣领域包括识别问题,这些问题通常听起来像是“给定某种奇怪的组合性质,检查给定结构是否满足它”。
Lucas 认为完美的编程竞赛题目应该包含一个仙人掌树。在尝试将层状集合和树结合成一个识别问题时,他最终提出了以下问题:给定一个有 $n$ 个顶点的无向树和一个集合族 $F = \{F_{1}, \ldots, F_{k}\}$,其中 $F_{i}$ 包含树中某两个顶点 $a_{i}$ 和 $b_{i}$ 之间简单路径上的所有顶点,检查集合族 $F$ 是否为层状集合族。注意,在这种情况下 $\Omega = V$,并且每个 $F_{i} \subseteq V$。
如你所见,Lucas 成功地将这个问题建议给了编程竞赛。现在轮到你来解决它了。
输入格式
输入的第一行包含两个整数 $n$ 和 $f (1 \le n, f \le 100000)$ —— 树中的顶点数和集合族 $F$ 中的元素数。
接下来的 $n-1$ 行描述了树的结构。在第 $i$ 行有两个整数 $u_{i}$ 和 $v_{i} (1 \le u_{i}, v_{i} \le n, u_{i}
eq v_{i})$ —— 由树的第 $i$ 条边连接的顶点的索引。
接下来的 $f$ 行描述了构成集合族 $F$ 的集合。在第 $i$ 行有两个整数 $a_{i}$ 和 $b_{i} (1 \le a_{i}, b_{i} \le n)$,使得 $F_{i}$ 包含树中顶点 $a_{i}$ 和 $b_{i}$ 之间简单路径上的所有顶点(包括 $a_{i}$ 和 $b_{i}$)。
输出格式
输出一个单词 `Yes` 或 `No`,取决于给定的集合族是否为层状集合族。
说明/提示
时间限制:2 秒,内存限制:512 MB。
题面翻译由 ChatGPT-4o 提供。