zoukankan      html  css  js  c++  java
  • AT2377 Blue and Red Tree

    AT2377 Blue and Red Tree  

    法一:正推

    红色的边在蓝色的树上覆盖,一定每次选择的是覆盖次数为1的边的覆盖这条边的红色边连出来

    覆盖次数可以树剖找到

    这条红色边,可以开始的时候每个红色边的编号打标记到线段树节点的vector里

    找一个覆盖次数为1的边的时候,沿途的vector不断弹出已经连出的红色边,一定会找到有且只有一个红色边

    链的覆盖次数--,标记这个红色边已经连好。

    法二:倒推在Ta的博客查看

    最后连的一定是一个红色和蓝色的重(chong)边

    不断找重边,然后缩点,(u,v)边表启发式合并。

    具体找新的重边:

    用一个map存每个边的出现次数

    设把v合并到u里,就遍历所有v的出边(包括蓝色和红色的)删除原来的v的所有痕迹,加上u的

    如果某个边出现2次,就是重边,加入

    新的重边一定是u连出去一条和v连出去的一条重了,所以一定可以考虑到。

  • 相关阅读:
    git stash回退
    基于git tag快速修复
    Go语言开发规范
    defer实现原理
    string数据结构
    关于const iota
    struct
    map数据结构底层详解
    go 函数进阶
    go 内存分配原理
  • 原文地址:https://www.cnblogs.com/Miracevin/p/10974524.html
Copyright © 2011-2022 走看看