时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 黄金 Gold
 
 
题目描述 Description

广州二中苏元实验学校一共有n个社团,分别用1到n编号。
广州二中苏元实验学校一共有m个人,分别用1到m编号。每个人可以参加一个或多个社团,也可以不参加任何社团。
每个社团都需要选一个代表。谦哥希望更多的人能够成为代表。

输入描述 Input Description

第一行输入两个数n和m。
以下n行每行若干个数,这些数都是不超过m的正整数。其中第i行的数表示社团i的全部成员。每行用一个0结束。

输出描述 Output Description

输出最多的能够成为代表的人数。

样例输入 Sample Input

4 4
1 2 0
1 2 0
1 2 0
1 2 3 4 0

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

各个测试点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 寻找代表元的更多相关文章

  1. 匈牙利算法 codevs 2776 寻找代表元

    codevs 2776 寻找代表元  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用 ...

  2. Codevs 2776 寻找代表元(二分图匹配)

    2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号. 广州二 ...

  3. 【二分图】【最大匹配】【匈牙利算法】CODEVS 2776 寻找代表元

    裸的匈牙利,存模板. #include<cstdio> #include<vector> #include<cstring> using namespace std ...

  4. codevs.cn 2776寻找代表元 最大流解法

    网址:http://codevs.cn/problem/2776/ 题目大意: n个社团,m个人,每个社团可以有一个人担任代表,每个人可以担任多个代表,问最多有多少人是代表. 思路:可以建一个图,然后 ...

  5. 【codevs】2776寻找代表元

    题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...

  6. Codevs2776 寻找代表元

    2776 寻找代表元 时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold    题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号 ...

  7. CJOJ 1943 【重庆八中模拟赛】寻找代表元(二分图最大匹配)

    CJOJ 1943 [重庆八中模拟赛]寻找代表元(二分图最大匹配) Description 八中一共有n个社团,分别用1到n编号. 八中一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也 ...

  8. RQNOJ PID141 / 寻找代表元 [2017年6月计划 二分图01]

    PID141 / 寻找代表元 ☆ 提交你的代码 查看讨论和题解 1分前 我的状态 已通过 2017-06-28 21:03:46 运行耗时:31 ms 运行内存:28048 KB 查看最后一次评测记录 ...

  9. 寻找代表元(codevs 2776)

    题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...

随机推荐

  1. <a href="#">什么意思

    转自:https://zhidao.baidu.com/question/67668291.html <a href="#">是链接到本页,因为你有的时候需要有个链接的 ...

  2. sql语句之连表操作

    内连接 select * from employee inner join department on employee.dep_id = department.id 左连接 在内连接的基础上保留左表 ...

  3. 极客时间_Vue开发实战_05.Vue组件的核心概念(1):属性

    05.Vue组件的核心概念(1):属性 代码地址: https://github.com/tangjinzhou/geektime-vue-1/blob/master/%E6%BC%94%E7%A4% ...

  4. CodeForces717C 【数学】

    题意: 给你n个数既表示a类的值也表示b类的值,然后计算a和b类两两搭配相乘相加,使得答案最小: 思路: 显而易见的方案是最小乘最大,次小乘次大,然后依次下去.. 可以那个特例证明这个是对的 #inc ...

  5. [Xcode 实际操作]一、博主领进门-(7)使用不同类型的iOS模拟器

    目录:[Swift]Xcode实际操作 本文将演示使用不同类型的iOS模拟器. 点击[运行]按钮,打开模拟器,并预览当前的项目. 当向苹果商店提交应用时,也需要同时提交应用的截图. 对当前的应用的界面 ...

  6. docker+jenkins实现持续集成

    持续集成的概念我就不多说了,网上一大堆,今日主要讲讲怎么通过docker 和jenkins实现项目的持续集成.看着简单,网上完整教程很少,本人摸索很久才搞定!!! 一.首先安装docker.安装过程可 ...

  7. foreach循环报NPE空指针异常

    前言 最近debug时忽然发现,如果一个集合赋值为null,那么对该集合进行foreach循环(也叫增强for循环)时,会报NPE(即空指针异常NullPointerException). 代码如下: ...

  8. Python-7-字典方法

    clear 删除所有字典项 >>> d = {} >>> d['name'] = 'Gumby' >>> d['age'] = 42 >&g ...

  9. C# 面向对象之面向接口

    接口的定义 与类不同的是接口用interface关键字 (1)接口中所有成员不能添加任何修饰符,默认为public,如果显示指定修饰符将会出现编译错误; (2)接口中不能包含字段.运算符重载.实例构造 ...

  10. Django (九) 项目开发流程&项目架构

    项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. ​ 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...