#C1006. 边防军阵

边防军阵

题目描述

城镇的结构可以看作一棵由 nn 个节点、n1n-1 条道路构成的树。

我方派出了 mm 支军队镇守城镇。第 ii 支军队会收到两个节点编号 xi,yix_i,y_i,随后它必须在以下两种部署方案中选择一种:

  • xix_iyiy_i 的简单路径经过的所有道路上部署军队;
  • 在除了 xix_iyiy_i 的简单路径经过的道路之外的所有道路上部署军队。

我方打算诱敌深入,因此希望把有限兵力集中在更少的道路上。你需要为每支军队选择一种部署方案,使得最终至少有一支军队部署的道路数量尽可能少。

请你求出这个最小值。

输入格式

第一行输入两个整数 n,mn,m,分别表示节点数量和军队数量。

接下来 n1n-1 行,每行两个整数 u,vu,v,表示一条连接节点 u,vu,v 的道路。

接下来 mm 行,每行两个整数 xi,yix_i,y_i,表示第 ii 支军队对应的两个节点。

输出格式

输出一行一个整数,表示最终有军队部署的道路数量的最小值。

样例 1 输入

6 8
1 2
1 3
1 4
1 5
3 6
2 1
4 5
6 2
6 1
6 5
6 6
1 5
2 5

样例 1 输出

3

该样例满足 n,m16n,m\le 16 的约束条件。

样例 2

见选手目录下的 army/army2.inarmy/army2.ans

该样例满足 n,m500n,m\le 500 的约束条件。

样例 3

见选手目录下的 army/army3.inarmy/army3.ans

该样例满足 n,m5000n,m\le 5000 的约束条件。

样例 4

见选手目录下的 army/army4.inarmy/army4.ans

该样例满足 m20m\le 20 的约束条件。

样例 5

见选手目录下的 army/army5.inarmy/army5.ans

该样例满足对所有 iixi,yix_i,y_i 之间有一条道路直接相连的约束条件。

样例 6

见选手目录下的 army/army6.inarmy/army6.ans

该样例满足树是一条链的约束条件。

样例 7

见选手目录下的 army/army7.inarmy/army7.ans

该样例满足无额外限制的约束条件。

数据范围

对于所有测试数据,均有:

  • 2n1062\le n\le 10^6
  • 1m1061\le m\le 10^6
  • 输入的 n1n-1 条道路构成一棵树;
  • 1u,v,xi,yin1\le u,v,x_i,y_i\le n

本题共 5050 个测试点,每个测试点 22 分。

测试点编号 分值 约束条件
161\sim 6 1212 n,m16n,m\le 16
7127\sim 12 n,m500n,m\le 500
132013\sim 20 1616 n,m5000n,m\le 5000
212621\sim 26 1212 m20m\le 20
273227\sim 32 对所有 iixi,yix_i,y_i 之间有一条道路直接相连
333833\sim 38 给定的树是一条链
395039\sim 50 2424 无额外限制