hdu 1150(最小点覆盖)
来源:互联网 发布:淘宝 快递信息录入 编辑:程序博客网 时间:2024/05/20 17:23
传送门
二分图最大匹配=最小点覆盖
题解:二分图左边点集为机器A的模式,右边为机器B的模式。对于每个任务,左右连边,最后跑一遍二分图最大匹配(最小点覆盖)即可。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAXN=104;int n,m,k;bool vis[MAXN<<1];int mat[MAXN<<1];int head[MAXN<<1],etot;struct EDGE { int v,nxt;}e[MAXN*20];bool dfs(int p) { for (int i=head[p];~i;i=e[i].nxt) { int v=e[i].v; if (!vis[v]) { vis[v]=true; if (mat[v]==-1||dfs(mat[v])) { mat[v]=p; return true; } } } return false;}inline void adde(int u,int v) { e[etot].nxt=head[u],e[etot].v=v,head[u]=etot++; e[etot].nxt=head[v],e[etot].v=u,head[v]=etot++;}int main() { while (scanf("%d",&n)&&n) { etot=0; memset(head,-1,sizeof(head)); memset(mat,-1,sizeof(mat)); scanf("%d%d",&m,&k); for (int i=0;i<k;++i) { int waste,u,v; scanf("%d%d%d",&waste,&u,&v); adde(u,n+v); } int max_match=0; for (int i=1;i<=n;++i) { memset(vis,false,sizeof(vis)); if (dfs(i)) ++max_match; } printf("%d\n",max_match); } return 0;}
阅读全文
0 0
- hdu 1150(最小点覆盖)
- HDU 1150(最小点覆盖)
- hdu 1150 最小点覆盖
- HDU 1150 Machine Schedule(最小点覆盖问题)
- hdu 题目1150 Machine Schedule(最小点覆盖)
- HDU 1150 Machine Schedule(最小点覆盖) 二分匹配
- HDU 1150 Machine Schedule(最小点覆盖)
- HDU 1150 Machine Schedule(最小点覆盖)
- HDU 1150 -- Machine Schedule (最小点覆盖)
- HDU 1150 Machine Schedule(最小点覆盖)
- hdu 1150 Machine Schedule(求最小点覆盖)
- HDU 1150 Machine Schedule (二分图最小点覆盖)
- HDU 1150 Machine Schedule 最小点覆盖
- hdu 1150 Machine Schedule ( 最小点覆盖 )
- hdu 1150 Machine Schedule (最小点覆盖)
- HDU 1150 Machine Schedule (最小点覆盖)
- hdu 1150 Machine Schedule(最小点覆盖)
- HDU 1150 Machine Schedule(最小点覆盖)
- maven的settings.xml基本配置
- 基础算法学习(03)-插值计算(拉格朗日插值法和牛顿插值法)
- 65.Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- loadrunner Lr_类函数之lr_set_transaction_status()和lr_end_transaction_instance()
- Jenkins基础入门-15-Jenkins中的Pipeline
- hdu 1150(最小点覆盖)
- [复习]哈希表 集合B
- Java三柱汉诺塔(梵塔)问题解决
- Java标准教程:Java 2D绘图--第2章 从绘图开始
- 高等概率论(10月12日)
- SSM框架整合:SpringMVC + Spring + MyBatis+Maven
- 【JZOJ 5382】 数列 口胡
- K
- / Vijos / 题库 / 1404 遭遇战 spfa 建图