标签:二分匹配
1 1 1 2 1 1 1 1 2 2 1 1 2 2 2 5 4 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 3 3 50 50 50 50 50 50 50 50 50 0 0
-1 1 2 1 2 3 4 5 -1
#include<stdio.h> #include<string.h> #define N 150 int visit[N]; int mark[N]; int match[N][N]; int n,m,k; int dfs(int x) { int i; for(i=1;i<=m;i++)//对左边的节点x与右边的节点进行逐一检查 { if(!visit[i]&&match[x][i]) { visit[i]=1;//标记检查过的点 if(mark[i]==-1||dfs(mark[i])) //mark如果没男的,就直接给个老公,如果已经有老公,搜他老公有没有喜欢的,有的话,该女配新男;;; {//|| 前面过了 后面不运行;; mark[i]=x;//修改匹配关系 return 1; } } } return 0; } int hungary () { memset(mark,-1,sizeof(mark)); int max=0,j; for(j=1;j<=n;j++)//对做部分顶点逐个进行遍历 { memset(visit,0,sizeof(visit)); if(dfs(j)) max++; } return max; } int mp[150][150]; int main() { int i,max; while(scanf ("%d%d",&n,&k),n||k) //k 个配 { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%d",&mp[i][j]); } } m=n; int fir=1; for(int col=1;col<=50;col++) { memset(match,0,sizeof(match)); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(mp[i][j]==col) { match[i][j]=1; } } } max=hungary(); if(max>k) { if(fir) { fir=0; printf("%d",col); } else printf(" %d",col); } } if(fir) puts("-1"); else puts(""); } return 0; } /*http://blog.csdn.net/leolin_/article/details/7199688 在二分图中: 程序中涉及的变量说明:n为二分图的左部分顶点个数(顶点标号1到n)、 m为二分图的右部分顶点个数(顶点标号为1-m), k为左右顶点的配对关系个数(保存在match二维数组中); 最小边覆盖 = 最大独立集 = 顶点个数n -最小顶点覆盖( 最大匹配) 【无向图的最大独立数】: 从V个顶点中选出k个顶,使得这k个顶互不相邻。 那么最大的k就是这个图的最大独立数。 【无向图的最大团】: 从V个顶点选出k个顶,使得这k个顶构成一个完全图,即该子图任意两个顶都有直接的边。 【最小路径覆盖(原图不一定是二分图,但必须是有向图,拆点构造二分图)】:在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联。最小路径覆盖 = |V| - 最大匹配数 【最小边覆盖(原图是二分图)】:在图中找一些边,使之覆盖了图中所有顶点,且任何一个顶点有且只有一条边与之关联。最小边覆盖 = 最大独立集 = |V| - 最大匹配数 【最小顶点覆盖】:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联。 最大团 = 补图的最大独立集 最小边覆盖 = 二分图最大独立集 = |V| - 最小路径覆盖 //二分图 最小路径覆盖 = |V| - 最大匹配数 //有向图 最小顶点覆盖 = 最大匹配数 最小顶点覆盖 + 最大独立数 = |V| 最小割 = 最小点权覆盖集 = 点权和 - 最大点权独立集 */ /* (1)最小点路径覆盖: 有向图中,用最少的没有交集(一个点只走一遍)的边覆盖所有的点. 建立一个新图,将G中的每个点i在新图中拆成两个点i'、i'',若G中存在边<i, j>则在新图中连边<i', j''>,显然新图是一个二分图,求其最大匹配,则(N-新图最大匹配的值)就是最小点路径覆盖值。 时间复杂度:O(NM)(Hungary算法) */
hdu 1498 50 years, 50 colors 二分匹配
标签:二分匹配
原文地址:http://blog.csdn.net/u013532224/article/details/44131331