zoukankan      html  css  js  c++  java
  • [二分图]最大匹配

    二分图的定义,以及判断图是否为二分图都很简单了。

    现在要说二分图的最大匹配。

    首先是定义吧,完美匹配就是一一对应,而最大匹配则是最大可以匹配的条数

    完美匹配一定是最大匹配,图中不一定都有完美匹配。

     1 int dfs(int u)
     2 {
     3     for(int i=Link[u];i;i=e[i].next)
     4     {
     5         int v=e[i].y;
     6         if(!bok[v])
     7         {
     8             bok[v]=1;
     9             if(!cy[v]||dfs(cy[v]))
    10             {
    11                 cx[u]=v;
    12                 cy[v]=u;
    13                 return 1;
    14             }
    15         }
    16     }
    17     return 0;
    18 }
    1 for(int i=1;i<=n;i++)
    2         {
    3             for(int j=1;j<=m;j++)
    4                 bok[j]=0;
    5             if(dfs(i))
    6                 ans++;
    7         }
    8         if(ans>=n)   printf("YES
    ");
    9         else    printf("NO
    ");

    第二个就是ans的定义不是有几种不同的匹配方案,而是匹配数。

    当ans〉=一边端点时,才有一个完美匹配。

  • 相关阅读:
    Demo
    Demo
    z-yelir-~
    CSP考前总结
    NOIP刷题
    清北学堂
    qsing
    【csp模拟赛九】--dfs3
    【csp模拟赛九】--dfs2
    【csp模拟赛九】--dfs
  • 原文地址:https://www.cnblogs.com/Kaike/p/11158443.html
Copyright © 2011-2022 走看看