HDU1150
来源:互联网 发布:idea java 代码模板 编辑:程序博客网 时间:2024/06/09 06:07
刚刚复习了匈牙利算法 ,本质就是通过寻找可增光路来寻找可匹配数,还有一个定理就是最小点覆盖数和最大匹配数在二分图中是相同的。
#include <algorithm>#include <iostream>#include <iomanip>#include <cstring>#include <cstdlib>#include <cstdio>#include <string>#include <vector>#include <queue>#include <cmath>#include <stack>#include <map>#include <cmath>#include <set>#include <climits>#define INF 0x7fffffff#define finc(i,a,b) for(i=a;i<=b;i++)#define fdec(i,a,b) for(i=a;i>=b;i--)using namespace std;int n,m,k;int ma[1050][1050];bool vis[1050];int girl[1050];bool judge(int n){int i,j;for(i=1;i<=m;i++){if(ma[n][i]&&!vis[i]){vis[i]=1;if(girl[i]==0||judge(girl[i])){girl[i]=n;return true;}}}return false;}int main(){int i,j,a,b,id;while(~scanf("%d",&n)&&n){ memset(vis,0,sizeof(vis)); memset(ma,0,sizeof(ma)); memset(girl,0,sizeof(girl));int ans=0;scanf("%d%d",&m,&k);for(i=1;i<=k;i++){scanf("%d%d%d",&id,&a,&b);ma[a][b]=1;}for(i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(judge(i))ans++;}printf("%d\n",ans);}return 0;}
0 0
- hdu1150
- hdu1150
- HDU1150
- hdu1150
- 匈牙利算法之hdu1150
- hdu1150 Machine Schedule
- hdu1150 匈牙利算法
- hdu1150 Machine Schedule
- HDU1150:Machine Schedule
- HDU1150-Machine Schedule
- HDU1150最小顶点覆盖
- 二分图匹配 Hdu1150
- hdu1150 Machine Schedule
- hdu1150 2010.3.5
- HDU1150 Machine Schedule
- hdu1150 最小点覆盖
- HDU1150最小点覆盖
- hdu1150 Machine Schedule
- 优化SQL查询:如何写出高性能的SQL语句
- 反射
- RETE算法
- PostgreSQL源码结构
- JSP列表形式显示数据库中的数据 OracleCachedRowSet 实例
- HDU1150
- C#中Convert和parse的区别
- 高通平台上的AMSS(Modeom端)Windows环境搭建
- WordPress主题制作全过程(九):制作single.php
- 谷歌Volley网络框架讲解——第一篇
- Android Studio debug使用release的签名
- SimpleDateFormat
- 使用C++进行声明式编程
- WordPress主题制作全过程(十一):制作page.php