zoukankan      html  css  js  c++  java
  • 关于匹配的一些问题

    int n;
    int mp[N][N];
    int linker[N];
    bool used[N];
    bool dfs(int a)
    {
        for(int i=0;i<n;i++)
          if(mp[a][i]&&!used[i])
          {
              used[i]=true;
              if(linker[i]==-1||dfs(linker[i]))
              {
                  linker[i]=a;
                  return true;
              }
          }
          return false;
    }
    int hungary()
    {
        int result=0;
        memset(linker,-1,sizeof(linker));
        for(int i=0;i<n;i++)
        {
            memset(used,0,sizeof(used));
            if(dfs(i))  result++;
        }
        return result;
    }
    //记得初始化mp。。邝斌的板子

    找出一个最大的集合使得该集合的任意两个人木有关系。

    根据最大独立集 =顶点数 - 最大匹配数

    hdu 1068

    二分图的最小顶点覆盖数=最大匹配数

    hdu 1150

    DAG图(无回路有向图)的最小路径覆盖

    hdu1151

     

  • 相关阅读:
    B站使用总结
    安装国外浏览器的好处
    查看网页源代码
    如何下载bilibili上面的视频
    11.27
    11.26
    11.25
    11.24获取时间
    11.23
    11.21
  • 原文地址:https://www.cnblogs.com/jhz033/p/6411235.html
Copyright © 2011-2022 走看看