poj 3041 Asteroids
这是一道二分匹配题,根据Konig定理:最大匹配数=最小覆盖数;
这里我们以行为左边,以列为右边建图,这样建好后,就是一个裸的二分匹配;
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<queue> #include<set> #include<map> #include<cstring> #include<vector> using namespace std; bool G[524][524],visit[524]; int match[524]; bool path( int num ,int N ) {for( int i = 1 ; i <= N ; i++ ){if( !visit[i] && G[num][i] ){visit[i] = true;if( match[i]==0 || path( match[i] ,N ) ){match[i] = num;return true;} } }return false; } int main( ) {int N,R,x,y;while( scanf( "%d %d",&N,&R ) ==2){int ans = 0;memset( G , 0 , sizeof( G ) );memset( match , 0 , sizeof( 0 ) );for( int i = 1 ; i <= R ; i++ ){scanf( "%d %d",&x,&y );G[x][y] = true; }for( int i = 1 ; i <= N ; i ++ ){memset( visit , 0 , sizeof( visit ) );if( path( i ,N ) )ans++; } printf( "%d",ans );}//system( "pause" );return 0; }
转载于:https://www.cnblogs.com/bo-tao/archive/2012/07/04/2576213.html
poj 3041 Asteroids相关推荐
- POJ 3041 Asteroids (对偶性,二分图匹配)
题目:POJ 3041 Asteroids http://poj.org/problem?id=3041 分析: 把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好. 挑战 ...
- POJ - 3041 Asteroids 二分图最小点覆盖
题目链接 二分图一个很重要的定理:看了很多大神的博客表示看不懂为什么,以后再看 最小点覆盖=最大匹配 最小点覆盖就是在二分图里边,选择一个点,将所有与该点相链接的边删去,问最小找多少个点能够把所有的边 ...
- POJ 3041 Asteroids(最小点覆盖)题解
题意:n*n的网格中有k个点,开一枪能摧毁一行或一列的所有点,问最少开几枪 思路:我们把网格看成两个集合,行集合和列集合,如果有点x,y那么就连接x->y,所以我们只要做最小点覆盖就好了. 参考 ...
- POJ 3041 Asteroids 二分图匹配
以行列为点建图,每个点(x,y) 对应一条边连接x,y.二分图的最小点覆盖=最大匹配 //#pragma comment(linker, "/STACK:1024000000,1024000 ...
- POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目分析:给出一个n*n的矩阵,其中有m个敌人,每一次操作可以清除某一列或某一行中的所有敌人,问若想清除所有敌人,至少需要多少次操作 题目分析:第一次见这种题,就是最小覆盖是要用最 ...
- POJ 3041 Asteroids (最小顶点覆盖)
题目类型 最小顶点覆盖 题目意思 给出最多10000个点的坐标 每次可以消除同一行的点或同一列的点 问至少要多少次才能把所有点都消除掉 解题方法 首先建图 每一个行号为一个点 每一个列号为一个点 那 ...
- POJ T3041 Asteroids
POJ T3041 Asteroids 题解: 如果没学过匈牙利算法的话,鄙人感觉会去暴力. 匈牙利算法已经有很好的博客了,鄙人就不在这赘述了. 代码: #include<cstdio> ...
- 【POJ - 3041】Asteroids (二分图,最小点覆盖)
题干: Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x ...
- 【POJ 3041】Asteroids (最小点覆盖)
每次选择清除一行或者一列上的小行星.最少选择几次. 将行和列抽象成点,第i行为节点i+n,第j列为节点j,每个行星则是一条边,连接了所在的行列. 于是问题转化成最小点覆盖.二分图的最小点覆盖==最大匹 ...
最新文章
- matlab中find函数使用
- 磁铁驱动反向续流串接电阻的的分析
- 《LeetCode力扣练习》第136题 只出现一次的数字 Java
- opencv相机标定
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
- sqlserver int转varchar_SQL server 常用数据类型讲解
- 如何将图片序列化_PS如何将图片制作成gif动态图 ps制作gif动态图教程
- 华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题)
- android module 加载.so,关于Android Studio主Module与依赖Module同时引入so库的问题
- word 文字超出表格边框怎么办
- linux crontab 定时任务解析
- 路畅安卓最新固件升级_最新大众路畅1.51固件刷机包
- django+layui图片上传(用户头像修改,实时预览)
- 写一个AndroidStudio有道翻译插件给大家
- 我爱淘二次冲刺阶段6
- 5G 理论峰值速率是怎么计算的?
- 如何使用Python解锁星河远征军的科幻旅途
- cannot connect to X server
- Adding items to hidden net GND
- 学习笔记16 window service 服务的相关内容
热门文章
- 不连续曲线 highcharts_什么是正则曲线和正则曲面
- Golang——多种运算符及优先级
- 修改wap游戏服务器,修改wap游戏服务器
- 安卓文本编辑器php cpp,开源的Android富文本编辑器
- matlab实现浮点转定点,浮点转定点方法总结.doc
- n个骰子的点数 java_n个骰子的点数和为s的概率集合输出(Java)
- C++ 读取文件操作
- 产品经理需要掌握的9种共性推荐策略
- 匿名内部类属于局部内部类吗_内部类详解————匿名内部类
- 分布式数据库在金融应用场景中的探索与实践