Coeforces 611H New Year and Forgotten Tree

题意

给出一张无向图,但是所有数字都由?代替(也即是说,你只知道每条边连接的两个点的标号的位数)
问你这可不可能是棵树
n<=200000

题解

我们将每个位数相同的点中挑一个点出来称为关键点
那么一个显而易见的结论是,所有树,都可以在不改变那个所有数字都由?代替后的结果的前提下,转变成一个关键树然后加一大堆叶子的形式(即去掉关键点,连通块大小都是1)
然后我们考虑这个怎么实现
首先爆搜关键树的形态,6^4
然后就是建模啦
以样例1,12个点,7个?-?,3个?-??,1个??-??为例
在这里插入图片描述
从左到右记为S A B T
源点流出A的是该类型的边的数量,然后A向所连接的B连INF的边,然后B向T连的是这种点的数量(减去了关键点)
如果u<->v所对应的A向代表u的B有1流量(或者说反向边有容量),就意味着存在一个u->v的条边,v同理
这是初始图,但是每次我们枚举了树的形态后,S->A的对应的边的容量是要同时改变的,然后我们就在改变后的图上跑网络流,如果满流,就可以输出答案了。输出答案的原理就是看AB间的边的反向边有多少容量
以上。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值