[SHOI2002]舞会
2024-09-04 00:36:34
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;
}
最新文章
- Struts2.X——搭建
- iOS 2D绘图 (Quartz2D)之阴影和渐变(shadow,Gradient)
- js前端的各种面试题
- hibernate延迟加载(get和load的区别)
- HLS视频点播&;直播初探
- Python egg
- sql 判断表是否存在
- javascript 学习笔记之面向对象编程(二):继承&;多态
- FPGA的SPI从机模块实现
- SpringMVC入门二: 1规范结构, 2简单整合MyBatis
- 前端 ------ 03 body标签中的相关标签
- React入门——制作一个TodoList App
- web开发之环境配置和文件系统
- MySQL 之 单表查询
- 树莓派 引脚及接口图 AV接口顺序
- C++中的成员对象
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
- 2018.09.16 atcoder Garbage Collector(贪心)
- ubuntu ibus ,chinese input-method
- PHP文件上传学习
热门文章
- httpclient失败重连机制
- 使用Guava适配不同的callback
- 如何使用shell收集linux系统状态,并把结果发给远端服务器
- 如何使用sqlalchemy获取某年某月的数据总和
- 自己定义Gradle插件之&;quot;Hello World&;quot;
- 优化 html 标签 为何能用HTML/CSS解决的问题就不要使用JS?
- strtok函数
- maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
- 基于FFMPEG SDK流媒体开发1---解码媒体文件流信息
- 2016/04/26 权限 数据库mydb2 五个表 分别是 1,用户 2,角色 3,权限 4,用户对应的角色 5,角色对应的权限