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

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;
}
相关推荐
yyuuuzz16 小时前
游戏云服务器推荐的技术选择思路
大数据·运维·服务器·游戏·云计算·aws
xinhuanjieyi1 天前
html修复游戏种太阳错误
前端·游戏·html
魔士于安1 天前
unity 音乐会场景 unity2022
游戏·unity·游戏引擎·贴图·模型
码来的小朋友2 天前
[python] 我开发了一个有20个关卡随机地图的迷宫游戏
python·游戏·pygame
不羁的木木2 天前
《HarmonyOS 6.1 新能力实战之智感握姿》第四篇:进阶应用——横屏游戏手柄模式
游戏·华为·harmonyos
Swift社区2 天前
鸿蒙游戏Runtime解析:Store如何驱动整个游戏世界?
游戏·华为·harmonyos
jushi89992 天前
修复电脑常见运行库问题 DirectX 组件状态、运行库、DLL 游戏常见运行库 DirectX 修复工具增强版
游戏·电脑
Swift社区2 天前
鸿蒙游戏为什么掉帧?60FPS性能优化实战指南
游戏·性能优化·harmonyos
喵星人工作室2 天前
C++火影忍者1.1.8
开发语言·c++·游戏
众乐乐_20082 天前
用claude Fabel5一句话生成的游戏:三国天命(有资源包)
游戏