二分图——poj2239
水题
/*
n门课,每门课有一个时间t
要求最大的n->t的匹配
*/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define maxn 1005
int mp[maxn][maxn],match[maxn],vis[maxn],n,m; int dfs(int x){
for(int i=;i<=m;i++)
if(!vis[i] && mp[x][i]){
vis[i]=;
if(match[i]==- || dfs(match[i])){
match[i]=x;return ;
}
}
return ;
}
int sum(){
int res=;
for(int i=;i<=n;i++){
memset(vis,,sizeof vis);
if(dfs(i))res++;
}
return res;
} void init(){
memset(match,-,sizeof match);
memset(mp,,sizeof mp);
}
int main(){
m=;
while(cin>>n){
init();
for(int i=;i<=n;i++){
int k,a,b;
scanf("%d",&k);
while(k--){
scanf("%d%d",&a,&b);
mp[i][b*+a]=;
}
}
cout<<sum()<<endl;
}
}
二分图——poj2239的更多相关文章
- POJ2239 二分图最大匹配
问题:POJ2239 分析: 本题给出每门课程的上课时间,求最大选课数,可以转化为二分图最大匹配问题求解. 设集合A为课程集,集合B为上课时间集,根据输入建立二分图.最大选课书就是该二分图的最大匹配数 ...
- POJ2239 Selecting Courses(二分图最大匹配)
题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 #include <iostream ...
- poj2239 Selecting Courses --- 二分图最大匹配
匈牙利算法模板题 有n门课程,每门课程可能有不同一时候间,不同一时候间的课程等价. 问不冲突的情况下最多能选多少门课. 建立二分图,一边顶点表示不同课程,还有一边表示课程的时间(hash一下). #i ...
- C - NP-Hard Problem(二分图判定-染色法)
C - NP-Hard Problem Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:262144 ...
- POJ 2125 Destroying the Graph 二分图最小点权覆盖
Destroying The Graph Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8198 Accepted: 2 ...
- bzoj4025 二分图
支持加边和删边的二分图判定,分治并查集水之(表示我的LCT还很不熟--仅仅停留在极其简单的模板水平). 由于是带权并查集,并且不能路径压缩,所以对权值(到父亲距离的奇偶性)的维护要注意一下. 有一个小 ...
- hdu 1281 二分图最大匹配
对N个可以放棋子的点(X1,Y1),(x2,Y2)......(Xn,Yn);我们把它竖着排看看~(当然X1可以对多个点~) X1 Y1 X2 Y2 X3 Y3 ..... Xn Yn ...
- POJ 2226二分图最大匹配
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...
- 二分图&网络流&最小割等问题的总结
二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...
随机推荐
- class7_Checkbutton 勾选项
最终的运行效果(程序见序号3): #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------ ...
- LeetCode刷题笔记-回溯法-分割回文串
题目描述: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab"输出:[ ["aa", ...
- 剑指offer——07用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题解: 有两个栈,stack1和stack2 push只在stack1上操作,pop只在stack2 ...
- 29-Ubuntu-远程管理命令-03-SSH工作方式简介
在Linux中SSH是非常重要的工具,通过SSH客户端可以连接到运行了SSH服务器的远程机器上. 1.SSH客户端是一种使用Secure Shell(SSH)协议连接到远程计算机的软件程序. 2.SS ...
- 配置Spring Security 错误:Property or field 'ROLE_USER' cannot be found
在学习http://www.mkyong.com/spring-security/spring-security-hello-world-example/时,出现以下错误: Property or f ...
- [190308]Ubuntu 安装完之后,安装的软件小记
install software vim sudo apt-get install -y vim Typora command copy from Typora website # or run: # ...
- vim编码方式设置
建议vim的_vimrc文件里设置如下的编码方式: set encoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936 set fileencoding= ...
- jquery高级编程学习
jquery高级编程 第1章.jQuery入门 类型检查 对象 类型检查表达式 String typeof object === "string" Number typeof ob ...
- 在Rancher2中部署Docker-Registry仓库服务
1.docker登陆认证 [root@master ~]# vim /etc/docker/daemon.json { "insecure-registries": [" ...
- JAVA 文件的上传下载
一.上传文件 1.使用 transferTo 上传 @ResponseBody @RequestMapping(value = "/file/upload") public Res ...