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

矩阵游戏--二分图的匈牙利算法

https://www.luogu.com.cn/problem/P1129

学习路线---https://blog.csdn.net/qq_39304630/article/details/108135381

1.二分图就是两个独立的两个集合,如这里是行和列

2.匈牙利匹配就是媒婆拉媒,没伴侣或者伴侣可以换就将当前的塞给她

3.最后true的个数就算最小点覆盖数或者最大匹配数

#include<bits/stdc++.h>
#include<string>
using namespace std;
#define N 100011
typedef long long ll;
typedef pair<int,int> pii;
int t,n; 
int mp[201][201];
int mate[201];
bool bo[201];
bool metch(int x)///二分图--匈牙利算法 
{for(int j=1;j<=n;j++){if(!bo[j]&&mp[x][j])///黑且没标记 {bo[j]=true;if(mate[j]==0||metch(mate[j]))///没伴侣或者j的伴侣可以换另一个 {mate[j]=x;///那j的伴侣现在就是x了 return true;///匹配成功 }}}return false;///一圈下来没有,失败qwq 
}
int main()
{
cin>>t;
while(t--)
{cin>>n;int s=0;memset(mate,0,sizeof(mate));///一定要清0!!!! for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>mp[i][j];if(mp[i][j]) s++;}}if(s<n) cout<<"No";else{s=0;for(int i=1;i<=n;i++){memset(bo,false,sizeof(bo));if(metch(i)) {s++;}}if(s==n) cout<<"Yes";///行列不重复的要够n个else cout<<"No"; ///不够就百搭 }cout<<endl;
}
return 0;
}

相关文章:

  • Vulkanised
  • 隧道消防报警综合盘使用说明书及详细介绍
  • React 入门完全指南:从零开始构建现代 Web 应用
  • 【无标题】spark SQL核心编程
  • STL详解 - list的模拟实现
  • C++零基础实践教程 指针与内存 类与对象入门 (面向对象基础)
  • 第五节:React Hooks进阶篇-如何用useMemo/useCallback优化性能
  • eSIM RSP(远程SIM配置)架构笔记
  • Spring Boot整合T-IO实现即时通讯
  • 记录第一次面试的经历
  • 游戏盾是什么?重新定义游戏安全边界
  • Sklearn入门之数据预处理preprocessing
  • Node.js 中的 Buffer(缓冲区)
  • esp-idf:多语言--lv_i18n
  • 状态模式详解与真实场景案例(Java实现)
  • 人脸检测-人脸关键点-人脸识别-人脸打卡-haar-hog-cnn-ssd-mtcnn-lbph-eigenface-resnet
  • 如何将 ESP32 快速接入高德、心知、和风天气API 获取天气信息
  • void MainWindow::on_btnOutput_clicked()为什么我在QT里面没有connect,也能触发点击效果
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——RTC时钟测试 #内部RTC时钟 #外部时钟模块AT8563
  • 运维面试题(十四)
  • 苏州安岭网站建设公司/公司关键词seo
  • 网站的域名每年都要续费/产品营销推广策略
  • 旺苍网站建设/企业策划咨询公司
  • 自己做网站申请域名/公众号开发网站公司
  • 潍坊网站制作公司/网络广告的类型有哪些
  • 学校营销型网站建设/怎么样进行网络推广