博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
南阳239----月老的难题『匈牙利算法』
阅读量:4682 次
发布时间:2019-06-09

本文共 1276 字,大约阅读时间需要 4 分钟。

1 /* 2 匈牙利算法模版题 3 邻接表实现,邻接矩阵超时 4 最大匹配问题 5  */ 6 #include 
7 #include
8 #include
9 using namespace std;10 const int maxn = 505;11 vector
v[maxn];//x = v[i][j]表示i可以与x进行匹配12 int vis[maxn],match[maxn];//vis[i]表示i已经访问(匹配)过为了防止在每次dfs中重复访问某点,x = match[i]表示x现在和i匹配13 bool dfs(int x)14 {15 for(int i = 0; i < v[x].size(); ++i)16 {17 int t = v[x][i];18 if(!vis[t])19 {20 vis[t] = 1;21 if(match[t] == -1 || dfs(match[t]))22 {match[t] = x; return true;}23 }24 }25 return false;26 }27 int hungary(int n)28 {29 int ans = 0;30 for(int i = 1; i <= n; ++i)31 {32 memset(vis,0,sizeof vis);33 if(dfs(i)) ++ans;34 }35 return ans;36 }37 int main()38 {39 int t,n,m,x,y;40 scanf("%d",&t);41 while(t--)42 {43 scanf("%d%d",&n,&m);44 for(int i = 1; i <= n; ++i)45 v[i].clear();46 memset(match, -1, sizeof match);47 while(m--)48 {49 scanf("%d%d",&x,&y);50 v[x].push_back(y);51 }52 printf("%d\n",hungary(n));53 }54 return 0;55 }

 

转载于:https://www.cnblogs.com/qq188380780/p/7356545.html

你可能感兴趣的文章
计算机一族必喝的四杯茶
查看>>
linux 下的ssh免密登陆设置
查看>>
【Hibernate 7】浅谈Hibernate的缓存机制
查看>>
润乾报表 动态控制文本的显示
查看>>
[oracle] 如何使用myBatis在数据库中插入数据并返回主键
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
UML-画类图与交互图的顺序
查看>>
杭电1060
查看>>
webdriver test1
查看>>
RFC端口号定义
查看>>
Unity Technologies-提供全面的技术支持服务
查看>>
Console-算法[for,if,break]-五个好朋友分苹果
查看>>
ylb: SQL表的高级查询-子查询
查看>>
import 用法
查看>>
6月7 考试系统
查看>>
mysql 基本操作
查看>>