zoukankan      html  css  js  c++  java
  • 国庆清北 图论

    图论

    图的存储
    邻接矩阵 O(1) 查找 是否存在,大小
    边表

    1.最短路
    floyd:
    dijkstra:O(n^2+m)->(堆优化)->STL O((n+m)logm) 一个点加多次
    ->手写堆 O((n+m)logn) 避免重复加元素,支持直接改元素
    图中没有负边 dis>=0
    spfa:最坏 O(nm) 有负权直接用,
    (bellman-ford)

    2.生成树
    最小生成树 prim
    像dij????O((n+m)logm)不要求掌握
    kruskal O(mlogm)
    非严格次小生成树:n,m<=1e5 v<=1e9
    n个点的完全图,有n^(n-2)个生成树 ->矩阵树定理
    求出所有生成树
    ->优化:
    最小生成树和次小生成树至少一条边不同
    枚举删掉最小生成树上的哪条边,求最小生成树,最小的那个
    有可能有多条边不同,但至少有那条边是不能用的
    O(mlogm+(n-1)*[ma^(-1)(m)]) <-重新跑一遍并查集
    约等于O(nm) 60'
    最小生成树和次小生成树最多只有一条边不同:
    枚举删掉哪条边,找最小的边加入O(n^2)
    枚举加入哪条边,形成一个环,删掉在环上的一条最大的树边
    对应树上一条链,->树上一条链最大值->倍增LCA
    树->没有环的连通图 luogu????

    3.强连通分量 10%
    1.有向图的强连通分量 tarjan
    2.无向图 边双联通分量->桥 ×
    3.无向图 点双联通分量->割点 ×
    强连通分量:有环的有向图->DAG DP
    (求强连通分量)+DAG+拓扑排序+DP
    DP:所有转移 有顺序

    4.匹配 20%
    二分图匹配:匈牙利算法:
    网络流 ×
    费用流 ×
    匈牙利算法:
    二分图:树(奇数深度的点,偶数深度的点)
    网格图
    二分图匹配问题:左边一个点最多能和右边一个点匹配....这个图最多能有多少个匹配
    左边每个人按照顺序和右边每个人进行匹配
    use数组保证复杂度,是否正在被要求匹配
    邻接矩阵 O(n^3)
    边表 O(nm) 和SPFA有同样的性质,一般跑不到

  • 相关阅读:
    SDN概述
    Linux企业运维人员必备150个命令汇总
    自动化运维工具puppet详解(二)
    自动化运维工具puppet详解(一)
    自动化运维工具[ansible详解三]
    ansible 常用模块
    自动化运维工具【ansible详解 二】
    A. Cinema Line
    A. Wrong Subtraction
    A. The number of positions
  • 原文地址:https://www.cnblogs.com/lcan/p/9742758.html
Copyright © 2011-2022 走看看