PAT 1134 Vertex Cover

这一题一开始死在英语上了,题目都没看懂。后来搜索了一下看来别人解说才懂,这一题主要是给出一个图的m条边的顶点,再给出几个集合v,集合中含有Nv个元素,问集合是否含有图的每条边的至少一个顶点,如果是,就输出Yes,不是就输出No。
我直接用v中的每个点去将有该点的边都标记后,再检测是否有没标记的边,结果不能AC,时间超限。实在想不到就只能搜索一下,最终找到了解法。 解法是先直接将v中有的点标记,再去遍历所有顶点和其相邻的顶点,判断是否有无标记的边(两个顶点都没标记,即边没有标记),若有就输出No,没有就就输出Yes。
这种做法是将v集合的遍历和图的顶点的遍历分开了,时间上限就是O(max(Nv,2m))。而我原来的做法是将两者的遍历嵌套成两层循环,时间上限是两者的乘积。主要是没有抓住核心,只要一条边的有一个顶点被标记了,不管另一个顶点有没有标记,都可以检测到边被标记,不需要将其相关联的顶点都标记起来,所以只要检测两个顶点是否有一个被标记了就行了。跟我的一贯的想法不一样,做个笔记。代码就不贴了。
还是贴一个解法者的地址:https://www.jianshu.com/p/9d93cb564193。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值