Descriptio

某学校要召开一个舞会,已知有N名学生,有些学生曾经互相跳过舞。当然跳过舞的一定是一个男生和一个女生,在这个舞会上,要求被邀请的学生中任一对男生和女生互相都不能跳过舞。问最多可邀请多少个学生参加.

Input

第一行为N,M代表有N个学生,M是已跳过舞的学生的对数N<=1000,M<=2000.接下来M行,每行两个非负整数,表示这两个学生曾跳过舞。学生的编号从0到N-1号

Output

输出一个数字,如题所示.

Sample Input

20 12

5 15

16 12

16 14

13 9

6 12

16 3

1 7

17 18

5 3

5 18

19 10

8 0

Sample Output

12


二分图最大独立点集,假定最大匹配数为\(K\),总点数为\(N\),那么就还剩\(N-2*K\)个点独立,又因为在\(K\)个匹配中,必能选出\(K\)个点和其他\(N-2*K\)个点都不相连,因此答案就为\(N-K\)

有一点需要注意,男女生的顺序需要定好,决定好是由男生匹配女生还是反着匹配,不过本题已经规定了后面的读入先男后女,因此不需要决定顺序

/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline int read(){
int x=0,f=1;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
return x*f;
}
inline void print(int x){
if (x>=10) print(x/10);
putchar(x%10+'0');
}
const int N=1e3,M=2e3;
int pre[M+10],now[M+10],child[M+10];
int path[N+10];
bool use[N+10];
int n,m,tot,ans;
void join(int x,int y){pre[++tot]=now[x],now[x]=tot,child[tot]=y;}
bool check(int x){
for (int p=now[x],son=child[p];p;p=pre[p],son=child[p]){
if (use[son]) continue;
use[son]=1;
if (path[son]<0||check(path[son])){
path[son]=x;
return 1;
}
}
return 0;
}
int main(){
n=read(),m=read();
memset(path,-1,sizeof(path));
for (int i=1;i<=m;i++){
int x=read(),y=read();
join(x+1,y+1);
}
for (int i=1;i<=n;i++){
memset(use,0,sizeof(use));
if (check(i)) ans++;
}
printf("%d\n",n-ans);
return 0;
}

最新文章

  1. Struts2.X——搭建
  2. iOS 2D绘图 (Quartz2D)之阴影和渐变(shadow,Gradient)
  3. js前端的各种面试题
  4. hibernate延迟加载(get和load的区别)
  5. HLS视频点播&amp;直播初探
  6. Python egg
  7. sql 判断表是否存在
  8. javascript 学习笔记之面向对象编程(二):继承&amp;多态
  9. FPGA的SPI从机模块实现
  10. SpringMVC入门二: 1规范结构, 2简单整合MyBatis
  11. 前端 ------ 03 body标签中的相关标签
  12. React入门——制作一个TodoList App
  13. web开发之环境配置和文件系统
  14. MySQL 之 单表查询
  15. 树莓派 引脚及接口图 AV接口顺序
  16. C++中的成员对象
  17. JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
  18. 2018.09.16 atcoder Garbage Collector(贪心)
  19. ubuntu ibus ,chinese input-method
  20. PHP文件上传学习

热门文章

  1. httpclient失败重连机制
  2. 使用Guava适配不同的callback
  3. 如何使用shell收集linux系统状态,并把结果发给远端服务器
  4. 如何使用sqlalchemy获取某年某月的数据总和
  5. 自己定义Gradle插件之&amp;quot;Hello World&amp;quot;
  6. 优化 html 标签 为何能用HTML/CSS解决的问题就不要使用JS?
  7. strtok函数
  8. maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
  9. 基于FFMPEG SDK流媒体开发1---解码媒体文件流信息
  10. 2016/04/26 权限 数据库mydb2 五个表 分别是 1,用户 2,角色 3,权限 4,用户对应的角色 5,角色对应的权限