codevs 必做:2776、1222
广州二中苏元实验学校一共有n个社团,分别用1到n编号。
广州二中苏元实验学校一共有m个人,分别用1到m编号。每个人可以参加一个或多个社团,也可以不参加任何社团。
每个社团都需要选一个代表。谦哥希望更多的人能够成为代表。
第一行输入两个数n和m。
以下n行每行若干个数,这些数都是不超过m的正整数。其中第i行的数表示社团i的全部成员。每行用一个0结束。
输出最多的能够成为代表的人数。
4 4
1 2 0
1 2 0
1 2 0
1 2 3 4 0
3
各个测试点1s
数据范围
n,m<=200
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 210
int e[N][N],vis[N],match[N];
int n,m,k,t,ans;
int dfs(int u){
for(int i=;i<=m;i++){
if(e[u][i]&&!vis[i]){
vis[i]=;
if(!match[i]||dfs(match[i])){
match[i]=u;
return ;
}
}
}
return ;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=,j;i<=n;i++){
while(scanf("%d",&j)==&&j){
e[i][j]=;
}
}
for(int i=;i<=n;i++){
memset(vis,,sizeof vis);
if(dfs(i)) ans++;
}
printf("%d\n",ans);
return ;
}
John先生晚上写了n封信,并相应地写了n个信封将信装好,准备寄出。但是,第二天John的儿子Small John将这n封信都拿出了信封。不幸的是,Small John无法将拿出的信正确地装回信封中了。
将Small John所提供的n封信依次编号为1,2,…,n;且n个信封也依次编号为1,2,…,n。假定Small John能提供一组信息:第i封信肯定不是装在信封j中。请编程帮助Small John,尽可能多地将信正确地装回信封。
n文件的第一行是一个整数n(n≤100)。信和信封依次编号为1,2,…,n。
n接下来的各行中每行有2个数i和j,表示第i封信肯定不是装在第j个信封中。文件最后一行是2个0,表示结束。
输出文件的各行中每行有2个数i和j,表示第i封信肯定是装在第j个信封中。请按信的编号i从小到大顺序输出。若不能确定正确装入信封的任何信件,则输出“none”。
3
1 2
1 3
2 1
0 0
1 1
分类标签 Tags 点此展开
/*
这是一道二分图匹配的变式,
假如一条边不可获缺,那么没有它一定无法完美匹配,
由此可以推得先进行一次匹配,再对匹配的边依次删除,如果不能完美匹配就输出
*/
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 101
int e[N][N],vis[N],lkx[N],lky[N];
int n,m,x,y,ans;
int dfs(int u){
for(int i=;i<=n;i++){
if(!e[u][i]&&!vis[i]){
vis[i]=;
if(!lky[i]||dfs(lky[i])){
lky[i]=u;
lkx[u]=i;
return ;
}
}
}
return ;
}
int main(){
scanf("%d",&n);
while(scanf("%d%d",&x,&y)==&&x&&y)
e[x][y]=;
for(int i=;i<=n;i++){
memset(vis,,sizeof vis);
if(dfs(i)) ans++;
}
if(ans!=n) printf("none\n");
else{
bool flag=;
for(int i=;i<=n;i++){
int t=lkx[i];
memset(vis,,sizeof vis);
e[i][t]=;
lky[t]=lkx[i]=;
if(!dfs(i)){
printf("%d %d\n",i,t);
lky[t]=i;lkx[i]=t;flag=;
}
e[i][t]=;
}
if(!flag) printf("none\n");
}
return ;
}
codevs 必做:2776、1222的更多相关文章
- codevs 必做:堆:1245、2879 并查集:1069、1074、1073
1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有两个长度为 N ...
- CODEVS 必做题:3149、2821、1531、3369、1230
3149 爱改名的小融 2 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Wikioi上有个人叫小融,他喜 ...
- 1、Codevs 必做:2833、1002、1003、2627、2599
2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困 ...
- openerp模块收藏 auto_setup 自动帮你完成建新库时必做几个操作(转载)
auto_setup 自动帮你完成建新库时必做几个操作 原文:http://shine-it.net/index.php/topic,6777.0.html 模块地址: https://github. ...
- 安装 CentOS 7 后必做的七件事
原文 安装 CentOS 7 后必做的七件事 CentOS 是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后, ...
- 20175221 MyCP(课下作业,必做)
MyCP(课下作业,必做) 任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: - java MyCP -tx XXX1.txt XXX2 ...
- 20175333曹雅坤MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...
- ###20175311MyCP(课下作业,必做)
MyCP(课下作业,必做) 作业题目 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...
- MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2 的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...
随机推荐
- 级联关系(内容大部分来自JavaEE轻量型解决方案其余的是我的想法)
1. 级联关系 在Hibernate程序中持久化的对象之间会通过关联关系互相引用.对象进行保存.更新和删除等操作时,有时需要被关联的对象也执行相应的操作,如:假设需要关联关系的主动方对象执行操作时,被 ...
- ISP模块之RAW DATA去噪(一)
ISP(Image Signal Processor),图像信号处理器,主要用来对前端图像传感器输出信号处理的单元,主要用于手机,监控摄像头等设备上. RAW DATA,可以理解为:RAW图像就是CM ...
- leetcode题解:Valid Palindrome(判断回文)
题目: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ig ...
- asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付
下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...
- 自己写的粗糙的Excel数据驱动Http接口测试框架(一)
1.excel用例: 2.用例执行: @Testpublic void BindBank() throws Exception { String fileName = "src/main/j ...
- requirejs主流程解读
近期读了下requirejs源代码,那叫一个复杂啊(相对于seajs来说).整理出了逻辑的主要部分的流程图,感兴趣的能够看下.欢迎批评指正~ http://www.gliffy.com/go/publ ...
- JUnit编写单元测试代码注意点小结
用eclipse编写单元测试的时候,可以直接选中某个类,然后右键new新疆一个junit case,界面如下图1所示: 图1:新建test case 选 择图1中的JUnit Test Case,然后 ...
- jm解决乱码问题-参数化-数据库操作-文件上传下载
jm解决乱码问题-参数化-数据库操作-文件上传下载 如果JM出果运行结果是乱码(解决中文BODY乱码的问题) 找到JM的安装路径,例如:C:\apache-jmeter-3.1\bin 用UE打开jm ...
- CoreImage的模糊滤镜
//1.原始图片 UIImage * image = [UIImage imageNamed:@"1.jpg"]; /****************core image***** ...
- 01-1制作U盘启动盘--大白菜超级U盘启动盘制作工具
使用大白菜超级U盘启动盘制作工具制作U盘启动盘 工具/材料: 电脑.U盘.浏览器.大白菜u盘启动制作工具. 操作方法: 打开浏览器,输入大白菜,点击普通下载进行大白菜u盘启动制作工具下载: 或者通过 ...