POJ-3041 匈牙利算法 二分图最大匹配
来源:互联网 发布:线刷软件 编辑:程序博客网 时间:2024/06/05 06:09
踢以
给出多个点的坐标 有一种攻击 可以把一次干掉同一列的 或者干掉同一行的 求最少的攻击次数
肥西
由于问题是问选取最少的行和列干掉所有的陨石 可以把输入的r和c看成r和c之间有一条连边因为要实现干就干掉一行的也就是说 在同一行的是连到一个点上的
比如1 3 ,1 2 那么1 就有两条边 分别连到2,3
比如再来看 2 2 ,3 2 同一列 那么在二分图最大匹配中 也就是只会选择一个 所以用二分图的最大匹配就可以表示出题目所要求的最小攻击次数
那么就相当于把所有的点都转化成了边 问题就变成了求最小覆盖集的个数
也就是最大匹配数
那么从第一个点开始不断的找增广路 不断更新匹配数就好了
CoDe
#include<cstdio>#include<cstring> using namespace std;bool used[1010],link[1010][1010];int mat[1010];int n,k; bool find(int x){ for(int i=1;i<=n;i++){ if(link[x][i]&&!used[i]){ used[i]=1; if(mat[i]==-1||find(mat[i])){ mat[i]=x; return 1; } } } return 0;}int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=k;i++){ int r,c; scanf("%d%d",&r,&c); link[r][c]=1; } int all=0; memset(mat,-1,sizeof(mat)); for(int i=1;i<=n;i++){ memset(used,0,sizeof(used)); if(find(i))all++; } printf("%d\n",all); return 0; }
阅读全文
0 0
- poj 3041 Asteroids (匈牙利算法---二分图最大匹配)
- POJ 3041 Asteroids 匈牙利算法 二分图最大匹配
- POJ-3041 匈牙利算法 二分图最大匹配
- POJ 3041 匈牙利算法 最小覆盖 最大二分匹配
- poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
- poj 2446 二分图最大匹配 匈牙利算法
- POJ 1469 COURSES (二分图最大匹配 匈牙利算法)
- poj 1469 COURSES 二分图最大匹配 匈牙利算法
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- 挑战 poj 3041 二分图最大匹配算法 (匈牙利算法)
- 二分图最大匹配算法-匈牙利算法
- 二分图最大匹配匈牙利算法(poj)3041(模板)
- 【二分图|最大匹配】POJ-3041 Asteroids(匈牙利算法dfs、bfs版)
- (模板题)poj 3041 Asteroids(二分图的最大匹配匈牙利算法)
- 二分图最大匹配(匈牙利算法)
- 最大二分图匹配(匈牙利算法)
- 最大二分图匹配(匈牙利算法)
- 二分图最大匹配之匈牙利算法
- 最大公因数和最小公倍数的求法
- 文档
- 【Tarjan】BZOJ1051 [HAOI2006]受欢迎的牛
- 优雅的程序员这样度过十一假期
- 404 | 本以为今天是最后一天上班,结果...
- POJ-3041 匈牙利算法 二分图最大匹配
- 19. Remove Nth Node From End of List(移除链表的倒数第n个节点)
- 学习yield关键字
- 盘点 | 10大行业大数据应用痛点及解决策略
- 设置可见GPU,进行多显卡深度学习训练
- 幻方的思路与实现
- Codevs2185 最长公共上升子序列
- list添加集合被覆盖,利用map求和——代码应该怎么放(二)
- #Java 核心技术卷一阅读笔记# 第九章 集合