博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3041 Asteroids(二分图 && 匈牙利算法 && 最小点覆盖)
阅读量:5325 次
发布时间:2019-06-14

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

嗯...

 

题目链接:http://poj.org/problem?id=3041

 

这道题的思想比较奇特:

把x坐标、y坐标分别看成是二分图两边的点,如果(x,y)上有行星,则将(x,y)之间连一条边,而我们要做的就是要找尽量少的点把所有的边覆盖,即为最小点覆盖问题,根据König定理:最小覆盖点数=最大匹配数,所以就可以用匈牙利算法求最大匹配了。

 

AC代码:

1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 int match[505], vis[505], g[505][505], n; 8 9 inline int dfs(int u){10 for(int i = 1; i <= n; i++){11 if(g[u][i] && !vis[i]){12 vis[i] = 1;13 if(!match[i] || dfs(match[i])){14 match[i] = u;15 return 1;16 }17 }18 }19 return 0;20 }//匈牙利21 22 inline int hungary(){23 int ans = 0;24 for(int i = 1; i <= n; i++){25 memset(vis, 0, sizeof(vis));26 if(dfs(i)) ans++;27 }28 return ans;29 }30 31 int main(){32 int k;33 while(~scanf("%d%d", &n, &k)){34 for(int i = 1; i <= k; i++){35 int r, c;36 scanf("%d%d", &r, &c);37 g[r][c] = 1;38 }39 printf("%d\n", hungary());40 }41 return 0;42 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/11415338.html

你可能感兴趣的文章
升级ruby后再安装cocodPod
查看>>
MySQL数据库8(十三)高级数据操作之select指令
查看>>
随心测试_Python Se_002<不同浏览器驱动>
查看>>
在ASP.NET WebService 中如何使用 WebMethod 属性
查看>>
一个很详细的web.xml讲解
查看>>
ArcGIS 《空间分析使用手册》的一些内容(分配函数、成本加权距离制图、单元统计、邻域统计等等)...
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
开发命名规范
查看>>
The connection to adb is down, and a severe error has occured.
查看>>
前端面试题(2):介绍一下对浏览器内核的理解
查看>>
收藏网站
查看>>
学习:组件生命周期(2)
查看>>
模板方法模式
查看>>
3.创建额外域
查看>>
(转)关于TCP封包、粘包、半包
查看>>
animate.css注意事项
查看>>
Java输入输出流
查看>>
java实现文件的复制
查看>>
BZOJ 4695 最假女选手 线段树
查看>>
好的分析报告应该包含的内容
查看>>