题干:

Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently located at the lattice points of the grid.

Fortunately, Bessie has a powerful weapon that can vaporize all the asteroids in any given row or column of the grid with a single shot.This weapon is quite expensive, so she wishes to use it sparingly.Given the location of all the asteroids in the field, find the minimum number of shots Bessie needs to fire to eliminate all of the asteroids.

Input

* Line 1: Two integers N and K, separated by a single space. 
* Lines 2..K+1: Each line contains two space-separated integers R and C (1 <= R, C <= N) denoting the row and column coordinates of an asteroid, respectively.

Output

* Line 1: The integer representing the minimum number of times Bessie must shoot.

Sample Input

3 4
1 1
1 3
2 2
3 2

Sample Output

2

Hint

INPUT DETAILS: 
The following diagram represents the data, where "X" is an asteroid and "." is empty space: 
X.X 
.X. 
.X.

OUTPUT DETAILS: 
Bessie may fire across row 1 to destroy the asteroids at (1,1) and (1,3), and then she may fire down column 2 to destroy the asteroids at (2,2) and (3,2).

题目大意:

在N*N的0和1组成的格子,一次操作可以将一行或一列的1全部变成0,问至少要进行多少次操作才能将所有的1全部变成0.

解题报告:

套路建图方式、、、裸的最小点覆盖、、

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
vector<int> vv[MAX];
int nxt[MAX];
bool used[MAX];
int n,k;
bool find(int x) {int up = vv[x].size();for(int i = 0; i<up; i++) {int v = vv[x][i];if(used[v] == 1) continue;used[v] = 1;if(nxt[v] == -1 || find(nxt[v])) {nxt[v] = x;return 1;}}return 0;
}
int match() {int sum = 0;for(int i = 1; i<=n; i++) {memset(used,0,sizeof used);if(find(i)) sum++;}return sum;
}
int main()
{cin>>n>>k;memset(nxt,-1,sizeof nxt);for(int i = 1; i<=k; i++) {int x,y;scanf("%d%d",&x,&y);vv[x].pb(y);}printf("%d\n",match());return 0 ;}

【POJ - 3041】Asteroids (二分图,最小点覆盖)相关推荐

  1. POJ - 3041 Asteroids 二分图最小点覆盖

    题目链接 二分图一个很重要的定理:看了很多大神的博客表示看不懂为什么,以后再看 最小点覆盖=最大匹配 最小点覆盖就是在二分图里边,选择一个点,将所有与该点相链接的边删去,问最小找多少个点能够把所有的边 ...

  2. POJ 3041 Asteroids(最小点覆盖)题解

    题意:n*n的网格中有k个点,开一枪能摧毁一行或一列的所有点,问最少开几枪 思路:我们把网格看成两个集合,行集合和列集合,如果有点x,y那么就连接x->y,所以我们只要做最小点覆盖就好了. 参考 ...

  3. Asteroids POJ - 3041 匈牙利算法+最小点覆盖König定理

    题意: 给出一个N*N的地图N   地图里面有K个障碍     你每次可以选择一条直线 消除这条直线上的所有障碍  (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把 ...

  4. POJ 3041 Asteroids 二分图匹配

    以行列为点建图,每个点(x,y) 对应一条边连接x,y.二分图的最小点覆盖=最大匹配 //#pragma comment(linker, "/STACK:1024000000,1024000 ...

  5. POJ 3041 Asteroids (对偶性,二分图匹配)

    题目:POJ 3041 Asteroids http://poj.org/problem?id=3041 分析: 把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好. 挑战 ...

  6. POJ 2226 二分图最小点覆盖

    题意 传送门 POJ 2226 题解 每个泥泞地需要被至少一块横着或竖着的板子覆盖,那么预处理出不能覆盖草地的限制下,所有尽可能长的横板子与竖板子.对可覆盖同一块泥泞地的 222 块板子连边,则转化为 ...

  7. 二分图最小点覆盖构造方案+König定理证明

    原文链接 前言 博主很笨 ,如有纰漏,欢迎在评论区指出讨论. 二分图的最大匹配使用 DinicDinicDinic 算法进行实现,时间复杂度为 O(ne)O(n\sqrt{e})O(ne​),其中, ...

  8. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...

  9. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)

    题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...

  10. hihocoder 1127 : 二分图三·二分图最小点覆盖和最大独立集

    最大独立集问题: 在图G中选取尽可能多的点,使得任意两个点之间没有连边. 结论:最大独立集的点数 = 总点数 - 二分图最大匹配 证明: 假设最大独立集的点数为|U|,二分图最大匹配的匹配数为|M|, ...

最新文章

  1. ikbc机械键盘打字出现重复_抖音开啤酒小姐姐同款面具,ikbc白无垢樱花机械键盘开箱体验...
  2. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...
  3. c语言数据结构-算法篇之冒泡排序
  4. 机器学习中常见的损失函数
  5. 此计算机支持多个rdp侦听程序,远程桌面侦听器证书配置
  6. docker mysql输入中文_Docker解决终端无法输入中文的问题
  7. 局域网聊天软件源码解析
  8. 同步方法中的锁对象_互斥锁与读写锁:如何使用锁完成Go程同步?
  9. sqlserver数据库安装后服务配置
  10. 《Unix环境高级编程》学习笔记:从点到面
  11. java 反射抽象_Java实现抽象工厂模式+java的反射的机制
  12. 【情感分析】基于Aspect的情感分析模型总结(PART IV)
  13. C语言入门程序——交换两个数
  14. wps 安装字体手册
  15. 【前端安全】web缓存投毒
  16. 博科导向器升级固件-U盘
  17. idea常用的搜索方式
  18. 《调教命令行04》触碰Linux的每个角落(长文)
  19. 华为云HMS Core 助力鸿蒙开发
  20. 凤凰卫视:专业、互动、持续的云服务助力凤凰新媒体转型

热门文章

  1. 第三章 随机变量的数字特征
  2. [Bugku][Crypto][CTF][2020]Crypto 1-20 write up
  3. 1115. Counting Nodes in a BST (30) 数据结构
  4. 新疆农业大学计算机科学与技术专业怎么样,新疆农业大学计算机科学与技术专业2016年在新疆理科高考录取最低分数线...
  5. php cli和fastcgi,php的几种运行模式CLI、CGI、FastCGI、mod_php
  6. C# 派生类的构造函数
  7. MongoDB数据库设计备忘
  8. ANSYS2020R2与Solidworks2019进行关联,但2019安装完后打开出现无法获得下列许可SOLIDWORKS Standard.使用许可文件不支持此版本(-21,126,0)
  9. git add remote_最全的git常用命令(建议收藏)
  10. 嵌入式MODEM通迅技术