[二分图]最大匹配

博客介绍了二分图最大匹配相关内容。提到完美匹配是一一对应,最大匹配是最大可匹配条数,完美匹配一定是最大匹配,但图中不一定存在完美匹配。还指出ans指匹配数,当ans大于等于一边端点时才有完美匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

 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\n");
9         else    printf("NO\n");

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

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

 

转载于:https://www.cnblogs.com/Kaike/p/11158443.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值