World Finals 2014 I

题意

给定(n)个点((x_i,y_i))(d),选出最大点集,两两距离不超过(d)

做法

先转成二分图,可以看看这篇文章

于是问题转化成了求二分图的最大独立集,等价于最小点覆盖的补集

写这篇文章具体是想讲讲König定理
König定理:在二部图中,最小点覆盖=最大匹配

proof
令最小点覆盖(=V),最大匹配(=E)
(Vge E):一个点最多覆盖一条匹配边
我们通过如下构造,得出一组(V=E)的最小点覆盖
对于左边所有未在匹配内的点,我们从其出发做遍历(遍历所有边),交替走(非匹配边-匹配边),并标记所有经过的点
可以将左边未标记的点与右边标记的点作为最小点覆盖(证明如下):
我们将上述选出来的点集称为(P)
(1):(P)覆盖了所有边(未被覆盖的边,当且仅当左端点被标记,右端点未被标记。若其为匹配边,与交替走矛盾;若其不为匹配边,从其出发一定会遍历这条边,从而右端点被标记,与假设矛盾)
(2):(|P|=E)(显然(P)均为匹配点,若同时存在于一条匹配边,两点要么同时被标记,要么均不被标记,故(|P|le E)。由于覆盖了所有边,(|P|ge E),所有(|P|=|E|)
得证

坑点:注意(ans=1)的情况,codeforces test 3设有卡点

原文地址:https://www.cnblogs.com/Grice/p/13998705.html