最大匹配 人员分配[邻接表]
Description
设有M个工人x1, x2, …, xm,和N项工作y1, y2, …, yn,规定每个工人至多做一项工作,而每项工作至多分配一名工人去做。由于种种原因,每个工人只能胜任其中的一项或几项工作。问应怎样分配才能使尽可能多的工人分配到他胜任的工作。这个问题称为人员分配问题。
Input
第一行两个整数m,n分别为工人数和工作数。
接下来一个整数s,为二分图的边数。
接下来s行,每行两个数ai,bi表示第ai个工人能胜任第bi份工作
Output
一个整数,表示最多能让多少个工人派到自己的胜任的工作上。
Sample Input
3 3
4
1 2
2 1
3 3
1 3
Sample Output
3
Hint
规模:
1<=m,n<=100
1<=s<=10000
.
.
.
.
.
分析
将存图方式改成邻接表即可
.
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ans,tj,n,m,link[4000],v[4000],head[4000];struct node
{int to,next;
}f[4000];int find(int x)
{for (int i=head[x];i;i=f[i].next){int j=f[i].to;if (!v[j]){int q=link[j];link[j]=x;v[j]=1;if (!q||find(q)) return 1;link[j]=q;}}return 0;
}int main()
{scanf("%d%d",&n,&m);scanf("%d",&m);for (int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);f[++tj].next=head[x];f[tj].to=y;head[x]=tj;}for (int i=1;i<=n;i++){memset(v,0,sizeof(v));ans+=find(i);}printf("%d",ans);return 0;
}
转载于:https://www.cnblogs.com/YYC-0304/p/10292803.html
最大匹配 人员分配[邻接表]相关推荐
- 最大匹配 人员分配[邻接矩阵]
Description 设有M个工人x1, x2, -, xm,和N项工作y1, y2, -, yn,规定每个工人至多做一项工作,而每项工作至多分配一名工人去做.由于种种原因,每个工人只能胜任其中的一 ...
- 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)
目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...
- C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)
目录 一.概述 例1: 例2: 代码: 二.实例 1.有向图的邻接表(拓扑排序) 2.有向网图的邻接表 3.树的孩子表示 一.概述 二级指针:指向指针的指针.一般需要修改地址的时候会用到二级指针. 注 ...
- C语言建立有向图的邻接表及其遍历操作
1 /*C语言建立有向图的邻接表及其遍历操作*/ 2 #include"stdio.h" 3 #include"stdlib.h" 4 //图的邻接矩阵储存结构 ...
- MySQL—通过Adjacency List(邻接表)存储树形结构
转载自:Mysql通过Adjacency List(邻接表)存储树形结构 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢?像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数 ...
- 有向图的邻接表表示法
图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List). 1. ...
- 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)
摘自:数据结构--无向图创建邻接表以及深度遍历.广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinese ...
- 邻接表1试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下:icoding---算法改进--配详细注释
邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType; typedef enum{DG, ...
- 有向图的邻接表描述 c++
有向图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency ...
最新文章
- C语言函数大全(a开头)
- 定位(positioning)
- 每天一个linux命令(11):nl命令
- css实现快速抖动效果_web前端入门到实战:CSS实现照片堆叠效果
- 使用PYTHON统计项目代码行数
- wolive-在线客服系统源码_如何搭建在线客服系统?
- Electric device abnormal detection based on IoT and knowledge graph-学习笔记
- ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462
- 盘点那些没用的上网小技巧-主流直播平台直播源的获取(适用potplayer)
- ESXI洗白安装黑群晖教程,附文件
- 1-10000内的素数c语言,输入1-10000的素数
- Visual studio的中英文切换
- 虚拟机突然没网了,虚拟机突然鼠标失灵
- JWT的数字签名的简单理解
- 大数据的特征(4V)
- 代理IP如何解决爬虫IP被封
- 怎么让搜狗收录-如何加快搜狗收录
- python中def _init_是什么意思_python3类中的def __init()__如何使用?
- C++俄罗斯方块源码(Qt版)
- Python-Level1-day16:异常处理try-exceptraise语句,for迭代原理,深入手写创建迭代器;yield浅出使用生成器
热门文章
- 台湾大学林轩田机器学习基石课程学习笔记12 -- Nonlinear Transformation
- php万年历月份处理_php实现万年历的完整代码
- PIC单片机入门_指令系统
- Ie6下asp.net 中treeview自动随鼠标变小的修复
- 在stringgrid的drawcell事件处理过程中,给单元格赋值时,要用textout输出,不要像一般给cell[i,j]赋值那样。
- volatile类型的数据
- 感知机:从原理到训练
- jsp form表里的submit点击没反应
- 简介I/O向量、sendv、writev
- Jackson 注解 -- 使用 Map存储JSON