Poj_3692 Kindergarten -二分图的最大团

题目:在二分图中找出最大的完全二分图

定理:二分图的最大团=其补图的最大独立集

/************************************************
Author        :DarkTong
Created Time  :2016/7/31 15:17:40
File Name     :Poj_3296.cpp
*************************************************/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>

#define INF 0x3f3f3f3f
#define esp 1e-9
typedef long long LL;
using namespace std;
const int maxn = 200 + 10;
int w[maxn][maxn], Left[maxn], n, m;
bool used[maxn];
bool match(int j)
{
    for(int i=1;i<=n;++i) if(w[i][j]&&!used[i])
    {
        used[i]=true;
        if(!Left[i]||match(Left[i]))
        {
            Left[i]=j;
            return true;
        }
    }
    return false;
}
int hungary()
{
    int res=0;
    memset(Left, 0, sizeof(Left));
    for(int i=1;i<=m;++i)
    {
        memset(used, 0, sizeof(used));
        if(match(i)) res++;
    }
    return res;
}

int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int k, cas=1;
    while(scanf("%d%d%d", &n, &m, &k)==3&&(n+m+k))
    {
        int u, v;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
            {
                if(i==j) w[i][j]=0;
                else w[i][j]=1;
            }
        for(int i=1;i<=k;++i)
        {
            scanf("%d%d", &u, &v);
            w[u][v]=0;
        }
        int ans = hungary();
        ans = n+m-ans;
        printf("Case %d: %d\n", cas++, ans);
    }
    return 0;
}

时间: 2024-10-25 18:12:50

Poj_3692 Kindergarten -二分图的最大团的相关文章

二分图的最大团

In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to pick some kids to play a game, which need that all

POJ 3692 Kindergarten (二分图 最大团)

Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5660   Accepted: 2756 Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some

poj 3692 Kindergarten,二分图的最大团

最大独立集 = V - 最小顶点覆盖 二分图的最小顶点覆盖数 = 最大匹配数 最大团 = 补图的最大独立集 #include <cstdio> #include <cstring> #include <algorithm> #include <stack> #include <vector> #include <queue> using namespace std; const int maxn = 200 + 10; int n,

POJ3692 Kindergarten —— 二分图最大团

题目链接:http://poj.org/problem?id=3692 Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7371   Accepted: 3636 Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know e

poj 3692 Kindergarten(二分图匹配)

题意:n个男孩相互认识,m个女孩相互认识,k对男孩和女孩相互认识,求最大的任意两人相互认识的集合: 思路:二分图匹配: 独立集=总数-最大匹配数: 最大团=原图补图的最大独立集=总数-补图的最大匹配数: 本题就是求最大团,先求补图的最大匹配数,匈牙利算法: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int t,n,m; int mm[505][505]; int

POJ - 3692 Kindergarten 二分图 最大匹配

题目大意:给出n个男生,m个女生,还有k对男女认识关系,性别相同的人都相互认识.现在要求你挑出k个人,使得这k个人两两之间都相互认识 解题思路:要挑都认识的人,可以排除掉不认识的人. 可以分成两个点集,一个点集是男,一个点集是女,两个点集的连线表示两个人互不相认识,所以只要找到最大的互不相认识的匹配数,再用 n + m -互不相认识的匹配数,得到的人就是都相互认识的人了 #include<cstdio> #include<cstring> #include<vector>

二分图的最小顶点覆盖 最大独立集 最大团

二分图的最小顶点覆盖 定义:假如选了一个点就相当于覆盖了以它为端点的所有边.最小顶点覆盖就是选择最少的点来覆盖所有的边. 方法:最小顶点覆盖等于二分图的最大匹配. 我们用二分图来构造最小顶点覆盖. 对于上面这个二分图,顶点分为左右两个集合,X集合包含1,2,3,4,Y集合包含5,6,7,8,9.假如现在我们已经找到一个最大匹配M,就是上面的红线所标注的M={(1,7),(2,5),(4,8)}.我们作如下定义:(1)定义1.2.4.5.7.8为已经匹配过的点,其他点为未匹配的点:(2)定义(4,

二分图学习整理

今天学习了一下二分图,赶紧总结整理一下: 二分图问题,有很多,但归根结底还是求最大匹配数. 二分图最大匹配及常用建图方法 Point 1: 二分图中的最小点覆盖数 = 最大匹配数 最小点覆盖:也就是说用最少的点覆盖所有的边 Point 2 : 二分图中的最小路径覆盖 = 顶点数 - 最大匹配数 最小路径覆盖:也叫最小边覆盖,是指用尽量少的不相交的路径覆盖图中的所有顶点. Point 3: 二分图的最大独立集合 = 顶点数 - 最大匹配数 独立集合:即 独立于所有联通边集之外的点,也就是与图中任意

hdu 5556 Land of Farms 最大团+暴力

Land of Farms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 539    Accepted Submission(s): 177 Problem Description Farmer John and his brothers have found a new land. They are so excited and d