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编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...
随机推荐
- HTML5/jQuery雷达动画图表 图表配置十分简单
1.HTML5/jQuery雷达动画图表 图表配置十分简单 之前我们介绍过不少形形色色的HTML5图表了,像这款HTML5折线图表Aristochart是一款很不错的折线图表,这款HTML5 Canv ...
- MacBook外置显卡eGPU折腾笔记
MacBook外置显卡eGPU折腾笔记 硬件选购 当今市场上个人电脑的独立显卡,基本上能选的只有NVIDIA和AMD了,如果你想买外置显卡来打游戏的话,NVIDIA和AMD的都可以,但如果是像我一样准 ...
- Redis缓存雪崩、缓存穿透、缓存击穿、缓存降级、缓存预热、缓存更新
Redis缓存能够有效地加速应用的读写速度,就DB来说,Redis成绩已经很惊人了,且不说memcachedb和Tokyo Cabinet之流,就说原版的memcached,速度似乎也只能达到这个级别 ...
- 【WIP】LaTex入门
创建: 2018/06/15 说明: 这鸟东西实在没什么用的感觉,无奈学校报告要用这个写.无奈抽点时间学一下.
- Mac下intellij IDEA新建javaweb项目
intellij IDEA可以说是非常好用的工具,本人用来开发java.比eclipse等好用太多了.谁用谁知道,当然只是开发工具而已,用什么都无所谓.大牛们都用记事本编程呢. 本文帮助新手创建一个j ...
- Codevs 3409 搬运礼物
3409 搬运礼物 CodeVS原创 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Description 小浣熊松松特别喜欢交 ...
- [Xcode 实际操作]一、博主领进门-(9)Xcode左侧的项目导航区界面介绍
目录:[Swift]Xcode实际操作 本文将演示Xcode的左侧操作界面. 项目的目录结构: 应用代理文件[AppDelegate.swift] 应用代理文件时系统运行本应用的委托,里面定义了如程序 ...
- Windows服务使用Windsor容器
该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. Windsor是ABP框架自带的IOC容器. 关于什么是IOC,你可以Bing或者Go ...
- Maven - settings.xml里的offline节点的作用
场景 某天我在本地修改了某个子项目的代码,并进行了打包:mvn clean install -DskipTests,接着我运行父项目却发现自己刚刚的改动并没有生效,或者说,我刚刚打包好的子项目变回了打 ...
- __contains__, __len__,__reversed__
__contains__():当使用in,not in 对象的时候 调用(not in 是在in完成后再取反,实际上还是in操作) class A(object): def __init__(self ...