codevs 2776 寻找代表元

广州二中苏元实验学校一共有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 <algorithm>
#include <cstring>
#include <cstdio> #define Max 2000
#define inf 0x7fffffff bool vis[Max<<];
using namespace std;
struct node
{
int next,to,value;
}edge[Max<<];
int head[Max<<],Answer,deep[Max<<],S,T,n,m,tot=;
void add_edge(int from,int to,int v)
{
node * w=&edge[++tot];
w->next=head[from];
w->to=to;
w->value=v;
head[from]=tot;
}
bool bfs(int s,int t)
{
int Que[Max<<];
int l=,r=;
Que[++r]=s;
memset(vis,,sizeof(vis));
memset(deep,-,sizeof(deep));
deep[s]=;
vis[s]=;
while(l<r)
{
int tp=Que[++l];
vis[tp]=;
for(int i=head[tp];i!=-;i=edge[i].next)
{
if((deep[edge[i].to]==-||deep[edge[i].to]>deep[tp]+)&&edge[i].value)
{
deep[edge[i].to]=deep[tp]+;
if(edge[i].to==T) return ;
if(!vis[edge[i].to])
{
Que[++r]=edge[i].to;
vis[edge[i].to]=;
}
}
}
}
return deep[t]!=-;
}
int dfs(int now,int t,int Limit)
{
if(now==t||Limit==) return Limit;
int rest=,f;
for(int i=head[now];i!=-;i=edge[i].next)
{
if(edge[i].value&&deep[edge[i].to]==deep[now]+&&(f=dfs(edge[i].to,t,min(edge[i].value,Limit))))
{
Limit-=f;
rest+=f;
edge[i].value-=f;
edge[i^].value+=f;
if(!Limit) break;
}
}
return rest;
}
void Dinic(int s,int t)
{
while(bfs(s,t)) Answer+=dfs(s,t,inf);
}
int main()
{
memset(head,-,sizeof(head));
scanf("%d%d",&n,&m);
S=;T=n+m+;
for(int i=;i<=n;++i)
{
add_edge(S,i,);
add_edge(i,S,);
}
for(int i=;i<=n;++i)
{
int a;
while(scanf("%d",&a))
{
if(a==)
break;
else
{
add_edge(i,a+n,);
add_edge(a+n,i,);
}
}
}
for(int i=;i<=m;++i)
{
add_edge(n+i,T,);
add_edge(T,n+i,);
}
Dinic(S,T);
printf("%d",Answer);
return ;
}
codevs 2776 寻找代表元的更多相关文章
- 匈牙利算法 codevs 2776 寻找代表元
codevs 2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用 ...
- Codevs 2776 寻找代表元(二分图匹配)
2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号. 广州二 ...
- 【二分图】【最大匹配】【匈牙利算法】CODEVS 2776 寻找代表元
裸的匈牙利,存模板. #include<cstdio> #include<vector> #include<cstring> using namespace std ...
- codevs.cn 2776寻找代表元 最大流解法
网址:http://codevs.cn/problem/2776/ 题目大意: n个社团,m个人,每个社团可以有一个人担任代表,每个人可以担任多个代表,问最多有多少人是代表. 思路:可以建一个图,然后 ...
- 【codevs】2776寻找代表元
题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...
- Codevs2776 寻找代表元
2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号 ...
- CJOJ 1943 【重庆八中模拟赛】寻找代表元(二分图最大匹配)
CJOJ 1943 [重庆八中模拟赛]寻找代表元(二分图最大匹配) Description 八中一共有n个社团,分别用1到n编号. 八中一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也 ...
- RQNOJ PID141 / 寻找代表元 [2017年6月计划 二分图01]
PID141 / 寻找代表元 ☆ 提交你的代码 查看讨论和题解 1分前 我的状态 已通过 2017-06-28 21:03:46 运行耗时:31 ms 运行内存:28048 KB 查看最后一次评测记录 ...
- 寻找代表元(codevs 2776)
题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...
随机推荐
- eclipse 怎么关闭 show children
转自:http://blog.51cto.com/swordbean/1736994 eclipse 关闭 show children 前段时间使用eclipse时,误按了 shift+alt+B结果 ...
- office2016专业增强版安装包和激活工具
链接:https://pan.baidu.com/s/1j_gvpNBWo1rQ0xB49I_Ttw 密码:v2w7
- Python2.7 urlparse学习
urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse等. urlpa ...
- [翻译] 物理引擎javascript实现
转自: How Physics Engines Work 高中物理全还给老师了啊啊啊啊啊啊 牛顿第二定律 物体加速度的大小跟物体受到的作用力成正比,跟物体的质量成反比,加速度的方向跟合外力的方向相同. ...
- 【Linux学习】Linux系统管理1—进程管理
Linux系统管理1-进程管理 一.Linux的三种进程 Linux包括3中不同类型的进程: 交互进程:由一个shell启动的进程.交互进程可以在前后台运行 批处理进程:该进程和终端无联系,是一个进程 ...
- 关于weblogic 10.3.6.0 的漏洞复现(1)
最近小R 搭建了个weblogic, 因为之前在公司找系统漏洞的时候,发现了这个漏洞,所以为了特地专门搭建了个10.3.6.0版本. 漏洞编号: CVE-2017-10271 漏洞的描述:就是web ...
- C#基础:通过委托给任何对象数组进行排序
在日常编写程序的时候,我们需要对一些对象进行排序,比如对int数组进行排序,自定义类数组进行排序,首先我们先讨论对数组进行排序,我们应该对冒泡排序比较熟悉,下面是数组用冒泡排序的方法 for (int ...
- iOS 中使用 MJExtension 遇到 关键字(id) 怎么办
MJExtension 是个人比较喜欢用的json 转model 的软件,当遇到系统关键字时就会出现崩溃,解决方式如下 1.建立Modle 解析类,服务返回数据中带有id,这个时候用字典转Mode(m ...
- css控制页面文字不能被选中user-select:none;
现象:html中可能有些地方不想让用户复制文字,或是用a标签做了个点击按钮,点快的时候文字会被选中,很丑,这个时候可以使用下面的方案禁止文字选中. 原因:鼠标点快了文字会被选中. 解决方案:不同的浏览 ...
- 小程序地区时间自定义选择器 picker
进入微信公众平台小程序开发文档搜索 picker 点进去后下滑,点击在开发者工具中预览即可