#P16664. [Ctu2024]Watchdogs

[Ctu2024]Watchdogs

题目描述

在一个被丘陵和森林包围的小镇 Kocourkov 中,出现了严重的老鼠问题。

小镇中共有 NN 个地点和恰好 N1N-1 条道路。任意两个地点之间都可以通过这些道路互相到达。每条道路连接两个地点,因此整个道路网络是一棵树。

每只老鼠恰好有两个巢穴,并且只在自己的两个巢穴之间往返。每个巢穴都位于某个地点。

人们发现,老鼠在其往返路径的大约中点处最脆弱。

形式化地说,若某只老鼠的两个巢穴分别位于地点 AABB,则地点 CC 是这只老鼠的一个脆弱地点,当且仅当:

  1. CC 位于从 AABB 的简单路径上;

  2. 满足

    d(C,A)d(C,B)1.|d(C,A)-d(C,B)|\le 1.

其中,d(X,Y)d(X,Y) 表示地点 XX 与地点 YY 之间的距离,即二者之间路径所经过的道路条数。

因此,一只老鼠可能有不止一个脆弱地点;某个巢穴本身也有可能是脆弱地点。

小镇计划在若干地点放置守望猫。如果一只守望猫所在的地点是某只老鼠的脆弱地点,那么它就可以消灭这只老鼠。

一只守望猫可以消灭任意多只老鼠。守望猫很懒,一旦被放置在某个地点,就会始终待在那里,不会移动。

购买守望猫的费用很高,因此小镇希望使用尽可能少的守望猫,并保证每只老鼠最终都能被消灭。

请计算最少需要放置多少只守望猫。

输入格式

第一行包含两个整数 N,KN,K

2N105,0K105,2\le N\le 10^5,\qquad 0\le K\le 10^5,

分别表示地点数量和老鼠数量。

接下来 N1N-1 行,每行包含两个整数 U,VU,V0U,VN10\le U,V\le N-1),表示地点 UU 和地点 VV 之间有一条直接道路。

接下来 KK 行,每行包含两个整数 P,QP,Q0P,QN10\le P,Q\le N-1),表示一只老鼠的两个巢穴分别位于地点 PP 和地点 QQ

保证 PQP\ne Q

输出格式

输出一个整数,表示为了保证所有老鼠最终都被消灭,最少需要放置的守望猫数量。

样例 1

输入

7 5
0 1
0 2
2 5
1 4
4 6
1 3
1 6
1 3
3 2
1 5
2 5

输出

3

图示

样例中的道路树

一种最优方案是在地点 441122 各放置一只守望猫:

  • 第一只老鼠被地点 44 的守望猫消灭;
  • 第二只和第三只老鼠被地点 11 的守望猫消灭;
  • 最后两只老鼠被地点 22 的守望猫消灭。