天天写算法之Girls and Boys

6人阅读 评论(0) 收藏 举报
分类:

这个题的出现标志着算法大业又加入了新的一员,虽然前面的还不牢靠,但是他的到来的确使得所有的东西变得更不牢靠。

二分图,KM,匈牙利,emmmm,最大匹配,完美匹配,完备匹配,增广路径,最大流。这一大堆东西,需要先去搜一波基础知识,再来做这个题。

题目很简单,就是找最大匹配,但是没有说是男是女,所以我们就直接乘2,最后结果除以2就行了。
代码:
#include<iostream>
#include<string.h>
#include<cstdio>
#define MAX 1005
using namespace std;

int n ;
int Map[MAX][MAX];//两个人是否有关系
bool used[MAX];//是否被访问过
int linker[MAX];//查看被连接的那一个集合是否有男生来连接了。

bool dfs(int a)
{
    for(int i = 0 ; i < n ; i ++)
    {
        if(Map[a][i]&&!used[i])
        {
            used[i]=true ;
            if(linker[i]==-1||dfs(linker[i]))
            {
                linker[i]= a ;
                return true ;
            }
        }
    }
    return false ;
}

int hungary(){
    int res = 0 ;
    memset(linker,-1,sizeof(linker));
    for(int i = 0 ; i < n ; i ++)
    {
        memset(used,0,sizeof(used));
        if(dfs(i)) res ++ ;
    }
    return res ;
}

int main(){
    int i , j , num ,a, b ;
    while(scanf("%d",&n)!=EOF)
    {
        memset(Map,0,sizeof(Map));
        for(i = 1 ; i <= n ; i ++)
        {
            scanf("%d: (%d)",&a,&num);
            for(j = 0 ; j <num ; j ++)
            {
                scanf("%d",&b);
                Map[a][b]= 1 ;
                Map[b][a]= 1 ; //我觉得正反两个方向都应该有关系
            }
        }
        num = hungary();
        printf("%d\n",n-num/2);

    }
}

查看评论

hdu 1068 Girls and Boys(匈牙利算法求最大独立集)

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...
  • u011721440
  • u011721440
  • 2014-07-23 20:46:39
  • 987

1036.Boys vs Girls (25)

1036.Boys vs Girls (25)pat-al-10362017-02-24 每次读入新数据,根据性别和分数来判断是否更新、更新给哪个 /** * pat-al-1036 * 2017...
  • ymdq1113
  • ymdq1113
  • 2017-02-24 20:40:53
  • 89

【PAT】1036. Boys vs Girls (25)

题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1036 题目描述: This time you are asked to tell ...
  • realxuejin
  • realxuejin
  • 2013-10-26 09:10:13
  • 1006

pat 1036. Boys vs Girls (25)

1036. Boys vs Girls (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B ...
  • wyh7280
  • wyh7280
  • 2015-07-18 15:23:00
  • 312

HDU 2690 Boys and girls(水~)

Description 在一次聚会上,有一些男孩女孩,现在我们问每一个人他/她看到的女生数量(除自己外),根据这些数量求出在场的女生数,如果不存在合理情况则输出Impossible Input ...
  • V5ZSQ
  • V5ZSQ
  • 2015-10-03 10:50:55
  • 375

HDOJ 1068 Girls and Boys (最大匹配数 匈牙利算法)

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...
  • a2459956664
  • a2459956664
  • 2016-08-08 16:04:04
  • 196

POJ 1466 && ZOJ 1137--Girls and Boys【二分图 && 最大点独立集】

Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 11134  ...
  • hpuhjh
  • hpuhjh
  • 2015-08-25 20:36:48
  • 575

PAT-A 1036. Boys vs Girls (25)

PAT-A 1036. Boys vs Girls (25)
  • Daniel960601
  • Daniel960601
  • 2017-02-17 10:01:35
  • 284

【杭电oj】1068 - Girls and Boys(最大独立集数,匈牙利算法)

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe...
  • wyg1997
  • wyg1997
  • 2016-03-29 17:34:09
  • 313

HDU1068 Girls and Boys 【最大独立集】

#include #include #define maxn 1010 int n, A[maxn], B[maxn]; bool vis[maxn]; int head[maxn], id;...
  • u012846486
  • u012846486
  • 2014-10-20 07:36:02
  • 1300
    个人资料
    持之以恒
    等级:
    访问量: 1772
    积分: 1120
    排名: 4万+
    文章存档
    最新评论