当前位置: 首页 > article >正文

匈牙利算法模板

P3386 【模板】二分图最大匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:最模板的一集.还未匹配则匹配,否则之前一个给现在这个让位置.

int n,m,e;
vector<int> vct[505];
int match[505];
bool vis[505];
bool mark[505][505];
bool dfs(int s){
    for(auto v:vct[s]){
        if(vis[v]) continue;
        vis[v]=1;
        if(!match[v]||dfs(match[v])){   女生没有伴侣,或者其伴侣可以选择其他女生
            match[v]=s;
            return 1;
        }
    }
    return 0;
}
void solve(){               匈牙利🇭🇺--求最大匹配 o(n*m)
    cin>>n>>m>>e;
    for(int i=1;i<=e;i++){
        int u,v; cin>>u>>v;
        if(!mark[u][v]){
            vct[u].emplace_back(v);    建单向边
            mark[u][v]=1;
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++) vis[j]=0;
        if(dfs(i)) ans++;
    }
    cout<<ans;
}

C-有大家喜欢的零食吗_河南萌新联赛2024第(一)场:河南农业大学 (nowcoder.com)

思路:纯模板.

int n;
vector<int> vct[505];
int match[505],vis[505];
bool dfs(int s){
    for(auto v:vct[s]){
        if(vis[v]) continue;
        vis[v]=1;
        if(!match[v]||dfs(match[v])){    如果女生没有伴侣,或者其伴侣可以选择其他女生
            match[v]=s;    糖果v被s孩子选了
            return 1;
        }
    }
    return 0;
}
有大家喜欢的零食吗
https://ac.nowcoder.com/acm/contest/86639/C
void solve(){               C   匈牙利🇭🇺--求最大匹配
    cin>>n;
    for(int i=1;i<=n;i++){
        int k; cin>>k;
        for(int j=1;j<=k;j++){      孩子选糖果
            int x; cin>>x;
            vct[i].emplace_back(x);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        if(dfs(i)) ans++;
        for(int j=1;j<=n;j++) vis[j]=0; init
    }
    if(ans==n) cout<<"Yes";
    else cout<<"No"<<endl<<n-ans;
}

[ABC091C] 2D Plane 2N Points - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:纯模板

int n;
pair<int,int> a[150];
pair<int,int> b[150];
vector<int> vct[105];
int match[105];
bool vis[105];
bool dfs(int s){
    for(auto v:vct[s]){
        if(vis[v]) continue;
        vis[v]=1;
        if(!match[v]||dfs(match[v])){     如果女生没有伴侣,或者其伴侣可以选择其他女生
            match[v]=s;
            return 1;
        }
    }
    return 0;
}
2D Plane 2N Points
https://www.luogu.com.cn/problem/AT_arc092_a
void solve(){  B--匈牙利
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].first>>a[i].second;
    for(int i=1;i<=n;i++) cin>>b[i].first>>b[i].second;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i].first<b[j].first&&a[i].second<b[j].second) vct[i].emplace_back(j);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++) vis[j]=0;
        if(dfs(i)) ans++;
    }
    cout<<ans;
}


http://www.kler.cn/news/329537.html

相关文章:

  • java项目实现钉钉异常告警实时监控
  • django使用笔记1--快速开始
  • [Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法
  • [深度学习]循环神经网络RNN
  • ARM 汇编5 数据类型
  • 【HTML5】html5开篇基础(3)
  • 基于AI大模型应用开发有哪几种方式?
  • Python3自带HTTP服务:轻松开启与后台管理
  • 螺狮壳里做道场:老破机搭建的私人数据中心---Centos下docker学习02(yum源切换及docker安装配置)
  • springboot整合Freemarker动态生成JSON
  • Spring Boot与模板方法模式:实现统一的日志处理流程
  • 鸢尾花书实践和知识记录[数学要素3-3几何]
  • 算法专题二: 滑动窗口
  • springboot高校科研论文判定管理系统的设计与实现
  • MySQL-SQL(DDL、DML、DQL、DCL)
  • 掌控板micropython编程实现OLED中显示文本
  • Python位运算的与众不同
  • 【选择”丹摩“深入探索智谱AI的CogVideoX:视频生成的新前沿】
  • 安装管理K8S的开源项目KubeClipper介绍
  • java8:hutool:httputil.post读取配置项中的url
  • Thingsboard 网关实战 modbus通信 rpc下发控制指令
  • 如何实现全行业证照一站式结构化识别?Textln企业资质证照识别上线!
  • 鸿蒙harmonyos next flutter混合开发之ohos工程引用 har 文件
  • 大数据毕业设计选题推荐-NBA球员数据分析系统-Python数据可视化-Hive-Hadoop-Spark
  • K8S精进之路-控制器DaemonSet -(3)
  • Word2vec的应用
  • Docker容器、数据卷和数据挂载
  • SpringAOP实现的两种方式-JDK动态代理和CGLIB动态代理
  • 基于小程序+Vue + Spring Boot的进销存库存出库入库统计分析管理系统
  • 聊聊Mysql的MVCC