题意:有P个孩子,有的孩子喜欢猫不喜欢狗,有的喜欢狗不喜欢猫(喜欢的和不喜欢的一定是相相对立的动物),动物园有N只猫,M只狗,每个孩子都有喜欢的猫讨厌的狗(或者喜欢的狗讨厌的猫),现在动物园要送走一批猫或者狗,如果某个孩子喜欢的动物留下并且讨厌的动物离开,那么这个孩子就会很开心,现在求出来最多能让多少个孩子开心。
分析:很明显可以看出来某个孩子喜欢的和别人讨厌的如果是同一个的话,那么他们之间就存在矛盾(也就是说不可能同时满足这两个孩子),可以根据给的喜好建立一个关系图,也就是有矛盾的孩子连线,,我们希望减少最少的孩子来消除所有的矛盾,既是最小点覆盖,二分图的最小点覆盖等于最大匹配数,求出来用总孩子数减去即可。
*************************************************************************
#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
using namespace std; const int MAXN = ;
const int oo = 1e9+; struct Animal{int like, hate;}Lcat[MAXN], Ldog[MAXN]; bool G[MAXN][MAXN], used[MAXN];
int Ly[MAXN]; bool Find(int i, int N)
{
    for(int j=; j<=N; j++)
    {
        if(G[i][j] && used[j] == false)
        {
            used[j] = true;
            if(!Ly[j] || Find(Ly[j], N))
            {
                Ly[j] = i;
                return true;
            }
        }
    }     return false;
} int main()
{
    int M, N, P;     while(scanf("%d%d%d", &N, &M, &P) != EOF)
    {
        int i, j, u, v, cn=, dn=;
        char ch1, ch2;         memset(G, false, sizeof(G));
        memset(Ly, false, sizeof(Ly));         for(i=; i<=P; i++)
        {
            scanf(" ");
            scanf("%c%d %c%d", &ch1, &u, &ch2, &v);             if(ch1 == 'C')
            {///喜欢猫u,不喜欢狗v
                Lcat[++cn].like = u;
                Lcat[cn].hate = v;
            }
            else
            {///喜欢狗u,不喜欢猫v
                Ldog[++dn].like = u;
                Ldog[dn].hate = v;
            }
        }         for(i=; i<=cn; i++)
        for(j=; j<=dn; j++)
        {///如果喜欢猫A的小孩发现不喜欢猫A的小孩,
         ///或者不喜欢狗A的小孩发现喜欢狗A的,都是排斥关系
            if( Lcat[i].like == Ldog[j].hate || Lcat[i].hate == Ldog[j].like )
                G[i][j] = true;
        }         int ans = ;         for(i=; i<=cn; i++)
        {
            memset(used, false, sizeof(used));
            if( Find(i, dn) == true )
                ans ++;
        }         printf("%d\n", P-ans);
    }     return ; } 

L - Cat VS Dog - HDU 3829(最大独立集)的更多相关文章

  1. Cat VS Dog HDU - 3829 (最大独立集 )

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total ...

  2. Cat VS Dog HDU_3829(最大独立集最大匹配)

    Cat VS Dog 题意:一群小朋友去动物园,如果每个小朋友喜欢的动物是猫,那么不喜欢的动物一定是狗,反之也是.现在动物园的管理者要拿走一些动物,如果拿走的是某个小朋友不喜欢的动物,那这个小朋友就非 ...

  3. HDU 3829 - Cat VS Dog (二分图最大独立集)

    题意:动物园有n只猫和m条狗,现在有p个小孩,他们有的喜欢猫,有的喜欢狗,其中喜欢猫的一定不喜欢狗,喜欢狗的一定不喜欢猫.现在管理员要从动物园中移除一些动物,如果一个小孩喜欢的动物留了下来而不喜欢的动 ...

  4. HDU 3829——Cat VS Dog——————【最大独立集】

    Cat VS Dog Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  5. HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)

    HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...

  6. (hdu step 6.3.7)Cat vs. Dog(当施工方规则:建边当观众和其他观众最喜爱的东西冲突,求最大独立集)

    称号: Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  7. hdu 3829 Cat VS Dog 二分图匹配 最大点独立集

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Prob ...

  8. HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)

    题意:每个人有喜欢的猫和不喜欢的狗.留下他喜欢的猫他就高心,否则不高心.问最后最多有几个人高心. 思路:二分图求最大匹配 #include<cstdio> #include<cstr ...

  9. hdu 2768 Cat vs. Dog (二分匹配)

    Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

随机推荐

  1. Python简易爬虫

    经常需要下载论文,每次都需要去网页上搜索,然后点击下载,实在麻烦,正好最近刚入门Python,心血来潮,想着写一个爬虫 经过一天查阅资料,基本算是完成了,但是还是不足,比如对知网和万方暂时还不行,但是 ...

  2. codevs 1036 商务旅行 (倍增LCA)

    /* 在我还不知道LCA之前 暴力跑的SPFA 70分 三个点TLE */ #include<iostream> #include<cstdio> #include<cs ...

  3. CSS入门学习(转)

    一.基础学习 1.何为CSS CSS是Cascading Style Sheets(层叠样式表)的简称,是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语 言). CSS文件也可以 ...

  4. bootstrap的流式布局

    Bootstrap---Fluid layout 流布局 流布局是一种适应屏幕的做法.即不固定块的宽度,而是采用百分比作为单位来确定每一块的宽度.这种布局非常适合一次编写,然后自适应各种不同大小的屏幕 ...

  5. Phonegap 安卓的自动升级与更新。当版本为4.0的时候

    清单文件中: <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/> ...

  6. YII数据库增删查改操作

    初学YII, 整理了一些YII数据库的相关操作,  共同学习,共同进步. 一.查询数据集合 //1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll ...

  7. Asp.net 主题

    设定主题: 右击网站,选择添加ASP.NET文件夹,选择主题.系统默认将文件夹命名为App_Themes,我们在这个文件夹下添加外观文件,在.skin后缀的文件中自定义我们想要的主题. 例如: < ...

  8. IDEA14下配置SVN

    本来以为是很简单的事情,没想到也浪费我有一会的时间,中间也出现了多多少少的问题. 1.在官网下载SVN,版本要为1.8,切忌不能1.9,否则会出错. 在安装SVN的时候,不能一路下一步,我们要安装命令 ...

  9. [转]Python中的with…as…

    先说明一个常见问题,文件打开: 1 2 3 4 5 6 7 try:     f = open('xxx')     do something except:     do something fin ...

  10. Python新手学习基础之数据结构-对数据结构的认知

    什么是数据结构? 数据结构是指:相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 举个列子来理解这个数据结构: 数据可以比作是书本, 数据结构相当于书架,书存放在书架上, ...