首页 > 编程语言 >[编程题]项目经理(二分图)

[编程题]项目经理(二分图)

时间:2022-08-20 11:12:24浏览次数:85  
标签:二分 项目经理 匹配 int 编程 st maxn ans match

项目经理

参考, 模板

'''二分图, 匈牙利算法
最大匹配数: 最大匹配的匹配边的数目
最小点覆盖数: 选取最少的点, 使任意一条边至少有一个端点被选择
最大独立数: 选取最多的点, 使任意所选两点均不相连
最小路径覆盖数: 对于一个 DAG (有向无环图), 选取最少条路径, 使得每个顶点属于且仅属于一条路径. 路径长可以为 0 (即单个点)

定理1: 最大匹配数 = 最小点覆盖数 (这是 Konig 定理)
定理2: 最大匹配数 = 最大独立数
定理3: 最小路径覆盖数 = 顶点数 - 最大匹配数
'''

from collections import defaultdict


a = list(map(int, input().strip().split()))
b = list(map(int, input().strip().split()))
n = int(input().strip())

G = defaultdict(set)
for i in range(n):
    x, y = list(map(int, input().strip().split()))
    G[x].add(y)

maxn = 2000

# match: 存储第二个集合中的每个点当前匹配的第一个集合中的点是哪个
# st: 表示第二个集合中的每个点是否已经被遍历过
st, match, ans = [False] * maxn, [-1] * maxn, 0

def find(x):
    for i in G[x]:
        if st[i] == False:
            st[i] = True
            if match[i] == -1 or find(match[i]):
                match[i] = x
                return True
    return False

for i in a:
    st = [False] * maxn
    if find(i): ans = ans + 1

print(ans)

标签:二分,项目经理,匹配,int,编程,st,maxn,ans,match
From: https://www.cnblogs.com/solvit/p/16607334.html

相关文章

  • 网络编程-TCP通信程序(下)代码
     TCP通信的客户端:向服务器发送连接请求,给服务端发送数据,读取服务端回写的数据表示客户端的类:java.net.Socket:该类实现客户端套接字(也称为“套接字”)。套接字是两台机器......
  • PowerShell教程 - 编程结构(Program Struct)- 第二部分
    更新记录转载请注明出处。2022年8月20日发布。2022年8月15日从笔记迁移到博客。字符串(String)说明本质就是.NETSystem.Stringtype使用字符串的索引(Indexingi......
  • Java网络编程
    Java网络编程Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能。Java虚拟机负责提供与操作系统的实际连接。以下是java.net包中的常用的类。InetA......
  • 网络编程-TCP通信程序(上)理论
    TCP通信程序概述 TCP通信能实现两台计算机之间的数据交互通信的两端要严格区分客户端(Client)与服务端(Server)两端通信时步骤1.服务端程序需要事先启动等待客户端的链......
  • 436. 寻找右区间--LeetCode_二分
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/find-right-interval著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目大意是这样的 数组......
  • 异构编程框架对比
    为了提高算法速度,基于openmp的多核编程已无法满足要求,最近调研了异构的方法。调研的目标是选择在windows平台上visualstudio上使用,采用c和c++语言。调研的框架有openmp,ope......
  • 从技术转项目经理关于设计方案的第一次思考
         夜深人静,思绪万千。到新公司担任项目经理已有半年时间,算来自己手头上的一个项目也进行了半年,却目前几乎没有一个流程能走通的,是谁之过?     静心......
  • python基础-函数式编程
    概念:电脑运算视作数学上的函数计算高阶函数:map,reduce,filter无副作用,相同的参数调用时钟产生同样的结果闭包Closure例子:defcache(func):store={}#外部自由......
  • 第7章 面向对象编程(基础部分)
    ​7.1 类与对象oop     问题:编写一个程序,输入猫名字,显示该猫的名字,年龄,颜色     现有技术:单独定义变量、数组;缺点:不利于数据管理,效率低   ......
  • 阅读《计算机图形学编程(使用OpenGL和C++)》6
    同一个场景渲染不同的对象,一种简单的方法是为每个模型使用单独的缓冲区。每个模型都需要自己的模型矩阵,这样我们就需要为我们渲染的每个模型生成一个新的模型-视图矩阵。还......