• AGC029F


    题意

    给定(n-1)({1,2,...,n})的子集(E_i)(E_ige 2)),每个子集选择两个点连边,使得最后形成一棵树。

    做法

    考虑二分图:(ulongrightarrow id(i)(uin E_i))

    假设我们得到了解,观察其在二分图上的样子是怎样的?

    对于(E_i),选出来的为((u,v)),二分图上选出((u,i)(v,i))
    由于最终构成了一棵树,对于任意右侧集合(S),选出的左边的点集并大小(ge |S|+1)(1)

    这等价于,若我们删去左侧任意节点,那么对于右侧集合(S),选出的左边的点集并(ge |S|)
    根据( ext{hall})定理,此时((n-1)-(n-1))二分图有完美匹配。

    那么我们先网络流跑一遍完美匹配,如果不存在完美匹配显然不合法。
    注意,若存在完美匹配,不一定合法,因为不一定满足(1)

    我们假设满足(1),可以构造一组解:

    (1)为根( ext{dfs})
    每次遍历(u)所在的(E_i)(集合(i)还没有访问过),然后继续往(i)的匹配边的点( ext{dfs})
    如果满足(N(S)ge |S|+1),那么一定能找到(i)
    假设现在已经用过了(T)集合,(T不为全集),无法在已经遍历的点找到另外的集合,那么(N(U-T)le |U-T|),与假设不符。(其中(U)({1,2,ldots,n-1})即全集)

  • 相关阅读:
    javascript异步编程学习及实例
    通过调试vue-cli 构建代码学习vue项目构建运行过程
    web技术栈开发原生应用-多端共用一套代码
    vuejs应用开发前后端分离
    web前端跨域解决方案JSONP,CORS,NGINX反向代理
    js script 加载顺序
    js 百度地图
    layui-table 样式
    css 排版 test
    layui table
  • 原文地址:https://www.cnblogs.com/Grice/p/12952005.html
Copyright © 2020-2023  润新知