10.4 学习笔记

图论


Floyd求最小环

for(int k = 1; k <= n; ++k)
{
      for(int i = 1; i < k; ++i)
      {
            for(int j = i + 1; j <= k; ++j)
            {
                  res = min(res , dis[i][j] + a[i][k] + a[k][j]);
            }
      }
}
for(int k = 1; k <= n; ++k)
{
      for(int i = 1; i <= n; ++i)
      {
            for(int j = 1; j <= n; ++j)
            {
                  dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
            }
      }
}

差分约束系统

对于一个 (n) 个变量构成的系统,求 (x_t - x_s) 的最大值。

对于一个形如 (x_i le x_j + c) 的形式,从 (j)(i) 建一条权值为 (c) 的边,求最短路。

次小生成树

非严格

树上倍增维护路径最大边权,枚举非树边。

严格

树上倍增维护最大和次大边权,枚举非树边。

Dilworth 定理

拓扑图的最小链覆盖等于最长反链,最小链覆盖:用最少的链覆盖所有点,使得每个点至少被覆盖一次,最长反链:最大的点集,点集中任意两个点无法互相到达。

二分图

  • 二分图最小覆盖等于最大匹配。

  • 二分图最大独立点集等于总点数减去最大匹配。

原文地址:https://www.cnblogs.com/zimujun/p/13768510.html