codevs 2776 寻找代表元

 时间限制: 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

 /*注意:link是linux系统的关键字*/
#include<iostream>
using namespace std;
#include<cstdio>
#define N 210
#include<cstring>
#include<vector>
int head[N],Link[N],n,m,ans=,t=-;
bool visit[N];
struct Edge{
int v,last;
};
vector<Edge>edge;
void add_edge(int u,int v)
{
Edge e;
e.v=v;e.last=head[u];
edge.push_back(e);
head[u]=++t;
}
void input()
{
scanf("%d%d",&n,&m);
int x;
memset(head,-,sizeof(head));
for(int i=;i<=n;++i)
{
scanf("%d",&x);
while(x)
{
add_edge(i,x);
scanf("%d",&x);
}
}
}
bool xylfind(int k)
{
for(int l=head[k];l!=-;l=edge[l].last)
{
if(!visit[edge[l].v])/*如果这个人没有访问过,访问过的话就说明是正在被占用,或者腾空间失败了*/
{
visit[edge[l].v]=true;/*如果这个人没有作为社团的代表,或者可以把这个人所代表的社团再更换一个代表人的话,就把当前这个人设为这个社团的代表*/
if(!Link[edge[l].v]||xylfind(Link[edge[l].v]))
{
Link[edge[l].v]=k;
return true;
}
}
}
return false;
}
int main()
{ input();
for(int i=;i<=n;++i)/*为每一个社团寻找代表*/
{
memset(visit,false,sizeof(visit));
/*别忘了每次把visit数组初始化,因为我们每次匹配一个i,都可能给很多的人表示visit*/
if(xylfind(i)) ans++;
}
printf("%d\n",ans);
return ;
}

匈牙利算法 codevs 2776 寻找代表元的更多相关文章

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

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

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

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

  3. codevs 2776 寻找代表元

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

  4. 【codevs】2776寻找代表元

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

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

    网址:http://codevs.cn/problem/2776/ 题目大意: n个社团,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. EffectiveJava——类层次优于标签类

    标签类: 有时候,可能会遇到带有两种甚至更多钟风格的类的实例的类,并包含表示实例风格的(tag)域.例如下面这个类,它能够表示圆形或者矩形: /** * 类层次优先与标签类 * @author wei ...

  2. Java8 如何进行stream reduce,collection操作

    Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...

  3. JavaScript基础14——js的Math对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. android Adapter剖析理解

    UI控件都是跟Adapter(适配器)打交道的 Adapter: 是用来帮助控件填充数据的中间桥梁 (在开发中大多数Textview控件的内容是依靠数据库传递并显示的如:新闻类) Adapter: 将 ...

  5. javascript --- 设计模式之单体模式(二)

    在JavaScript里,实现单例的方式有很多种,其中最简单的一个方式是使用对象字面量的方法,其字面量里可以包含大量的属性和方法: var her = { property1: 'someing', ...

  6. Git的安装和使用记录

    Git是目前世界上最先进的分布式版本控制系统(没有之一),只用过集中式版本控制工具的我,今天也要开始学习啦.廖雪峰的git教程我觉得很详细了,这里记录一下步骤以及我终于学会用Markdown了,真的是 ...

  7. mvc项目架构搭建之UI层的搭建

    项目架构搭建之UI层的搭建 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 5.项目创 ...

  8. ABAP中正则表达式的简单使用方法 (转老白BLOG)

    在一个论坛上面看到有人在问正则表达式的问题,特举例简单说明一下.另外,REPLACE也支持REGEX关键字.最后:只能是ECC6或者更高版本才可以(ABAP supports POSIX regula ...

  9. Google可能会用苹果的Swift 为什么?

    Google可能会用苹果的Swift 为什么? 2014 年夏天,苹果在 WWDC 大会上宣布了全新的程序语言 Swift,主要用来开发 iOS 与 OSX 应用. 去年年底,苹果将 Swift 开源 ...

  10. Android按钮的四种点击事件

    本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(B ...