NOJ [1305] Cat VS Dog
来源:互联网 发布:知乎live打包百度云 编辑:程序博客网 时间:2024/05/16 06:15
- 问题描述
- The zoo have N cats and M dogs, today there are P children visiting the zoo, each child has a like-animal and a dislike-animal, if the child's like-animal is a cat, then his/hers dislike-animal must be a dog, and vice versa.
Now the zoo administrator is removing some animals, if one child's like-animal is not removed and his/hers dislike-animal is removed, he/she will be happy. So the administrator wants to know which animals he should remove to make maximum number of happy children. - 输入
- The input file contains multiple test cases, for each case, the first line contains three integers N <= 100, M <= 100 and P <= 500.
Next P lines, each line contains a child's like-animal and dislike-animal, C for cat and D for dog. (See sample for details) - 输出
- For each case, output a single integer: the maximum number of happy children.最大独立集问题,今天刚触手,个人感觉难点在与二分图的连边,必须按题意来把边连出来
#include<stdio.h>#include<string.h>#define maxn 505int n,m,p;bool vis[maxn];int match[maxn];char love[maxn][5],hate[maxn][5];struct edge{int num;//与某个顶点相连的顶点数目 int next[maxn];}mat[maxn];bool dfs(int x){for(int i=0;i<mat[x].num;i++){if(!vis[mat[x].next[i]]){vis[mat[x].next[i]]=true;if(match[mat[x].next[i]] == -1 || dfs(match[mat[x].next[i]])){match[mat[x].next[i]]=x;return true;}}}return false;}int hungary(){int tot=0;memset(match,-1,sizeof(match));for(int i=0;i<p;i++){memset(vis,0,sizeof(vis));if(dfs(i))tot++;}return tot;}int main(){while(~scanf("%d%d%d",&n,&m,&p)){char c,d;int i,j;getchar();for(i=0;i<maxn;i++) mat[i].num=0;for(i=0;i<p;i++)scanf("%s %s",love[i],hate[i]); for(i=0;i<p;i++) for(j=i+1;j<p;j++) { if(!strcmp(love[i],hate[j]) || !strcmp(hate[i],love[j]))//某个人喜欢的恰好是另一个不喜欢的,产生矛盾,就连一条边{ mat[i].next[mat[i].num]=j; mat[i].num++; mat[j].next[mat[j].num]=i; mat[j].num++; } }printf("%d\n",p-hungary()/2);}return 0;}
0 0
- NOJ [1305] Cat VS Dog
- Cat VS Dog
- Cat VS Dog
- Cat vs. Dog
- HDU2768 Cat vs. Dog
- HDU3829-Cat VS Dog
- Cat VS Dog HDU
- HDU3829 Cat VS Dog
- HDU 2768 Cat vs. Dog
- hdu 3829 Cat VS Dog
- HDU-3829 Cat VS Dog
- HDU 3829 CAT VS DOG
- HDU 3829 Cat VS Dog
- HDU 2768 Cat vs. Dog
- HDU 3829 Cat VS Dog
- HDU-3829 Cat VS Dog
- UVALive 4288 Cat vs. Dog
- HDU 3829 Cat VS Dog
- System.out
- APP欢迎界面的实现:定时跳转+检查网络(2014.6.16)
- 24基础指标、obv使用方法及分析技巧
- [数据结构]栈的插入,归并以及快速排序
- 中文乱码问题分析
- NOJ [1305] Cat VS Dog
- 开发Google眼镜的app
- 3Sum
- 人不成熟的五大特征---张瑞敏
- 充实生活比什么都强
- WordPress插件 WP User Frontend Pro专业版/用户前端中心汉化版[更新至v2.1.10]
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- 作业4
- 为什么学习C/C++