博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[模板]匈牙利算法(二分图匹配)
阅读量:5171 次
发布时间:2019-06-13

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

洛谷P3386

我还是比较喜欢叫它——谈恋爱算法。。。详见  

注意:判断的条件是:if(f[x][i]==1&&used[i]==0)

   其他没什么了,如果每次用memset会超时,可以使用二维数组记录

 

1 #include
2 using namespace std; 3 inline int sc() 4 { int x=0,f=1;char ch=getchar(); 5 while(!isdigit(ch)){ if(ch==45)f=-1;ch=getchar();} 6 while(isdigit(ch)) { x=x*10+ch-48;ch=getchar();} 7 return x*f; 8 } 9 int f[1010][1010],lk[1010],n,m,e;10 bool vis[1010];11 bool find(int x)12 { for(int i=1;i<=m;i++)13 { if(f[x][i]==1&&vis[i]==0)14 { vis[i]=1;15 if(lk[i]==0||find(lk[i]))16 return lk[i]=x,1;17 }18 }19 return false;20 }21 int main()22 { n=sc();m=sc();e=sc();23 for(int i=1;i<=e;i++)24 { int u=sc(),v=sc();25 if(u>n||v>m)continue;26 f[u][v]=1;27 }28 int cnt=0;29 for(int i=1;i<=n;i++)30 { memset(vis,0,sizeof(vis));31 if(find(i)) cnt++;32 }33 cout<
<

 

转载于:https://www.cnblogs.com/Slager-Z/p/7784502.html

你可能感兴趣的文章
(转)MFC界面风格
查看>>
Centos7 tmux1.6 安装
查看>>
二叉树(三)
查看>>
linux加密文件系统 fsck 无法修复一例
查看>>
【linux配置】VMware安装Redhat6.5
查看>>
AI自主决策——有限状态机
查看>>
iframe父子窗口取值
查看>>
利用Python进行数据分析_Pandas_数据结构
查看>>
《计算机组成原理》第6章:总线
查看>>
关于String str =new String("abc")和 String str = "abc"的比较
查看>>
Android软件架构及子系统介绍
查看>>
Java命名规范
查看>>
小学生算术
查看>>
BZOJ2823: [AHOI2012]信号塔
查看>>
mysql查询前几条记录
查看>>
java二分法查找实现代码
查看>>
体系编程、SOC编程那些事儿
查看>>
mysql索引的艺术
查看>>
IBM RSA 的语言设置
查看>>
《http权威指南》阅读笔记(二)
查看>>