C. 匹配 (match)

    Type: Default File IO: match 2000ms 256MiB

匹配 (match)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

小 Y 最近提出了一个图论问题:MCMMPDNT(Minimum Cost Maximum Matching Problem based on the Depth of Nodes in a Tree)。

给定一棵 nn 个节点的树,其中以节点 11 为根。两个节点的距离定义为连接它们的简单路径上的边数。定义第 ii 个节点的深度为节点 ii 和根之间的距离。数据可以保证,除了深度 00 之外,每个深度都有偶数个节点。

小 Y 随后创建了一个新的无向图 GG,其中包含 nn 个节点。如果节点 ii 和节点 j (ij)j\ (i\not = j) 在树上具有相同的深度,则 GG 中会有一条无向边连接节点 ii 和节点 jj ,该边的权重是树上节点 ii 与节点 jj 之间的距离。

对于图 G=(VE)G=(V,E)GG 中的匹配 MM 是一些顶点不交的边;也就是说,没有两条边连接到同一个顶点。最大匹配是指包含最多的边的匹配。匹配 MM 的权是 MM 中边的权重之和。

现在的问题是:图 GG 的最小权最大匹配的权是多少?

小 Y 试图使用带花树算法(无向图的匹配算法)来解决这个问题,但它似乎太慢了。你能设计一个更快的算法来解决这个问题吗?

输入格式

match.in 文件读入数据。

第一行包含一个整数 nn,表示树上的节点数。

接下来 n1n-1行,每行包含两个整数uiviu_i,v_i,表示树的一条边。

保证输入形成一棵树,并且除了深度 00 之外,每个深度都有偶数个节点。

输出格式

输出到 match.out 文件。

一个整数,表示 GG 的最小权最大匹配的权。

样例 1

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

一个最小权最大匹配是选择 {(2,3),(4,5),(6,7)}\{(2,3), (4,5),(6,7)\},权为 =2+2+4=8=2+2+4=8

样例 2

点击链接 ex_match2.inex_match2.out 下载大样例 2 的输入数据和输出数据。

数据范围

对于每个测试点, 保证 1n106,1ui,vin1\le n\le 10^6, 1\le u_i,v_i\le n

子任务 分数 附加约束条件
11 1010 n10n\le 10
22 1515 n20n\le 20
33 2020 n1000n\le 1000
44 2525 n105n\le 10^5
55 3030 无附加限制

NOIP2测

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2024-11-7 18:15
End at
2024-11-7 21:45
Duration
3.5 hour(s)
Host
Partic.
7