博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3041 Asteroids(二分图模板题)
阅读量:5075 次
发布时间:2019-06-12

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

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 41 11 32 23 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).
题解:二分图模板题:
参考代码:
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 using namespace std;14 const int maxn=520;15 int n,m,ok[maxn];16 bool a[maxn][maxn],vis[maxn];17 18 bool Find(int x)19 {20 for(int i=1;i<=n;i++)21 {22 if(a[x][i]&&!vis[i])23 {24 vis[i]=true;25 if(!ok[i]||Find(ok[i]))26 {27 ok[i]=x;28 return true;29 }30 }31 }32 return false;33 }34 int maxP()35 {36 int ans=0;37 memset(ok,0,sizeof(ok));38 for(int i=1; i<=n; i++)39 {40 memset(vis,false,sizeof(vis));41 if(Find(i)) ans++;42 }43 return ans;44 }45 int main()46 {47 cin>>n>>m;48 49 memset(a,false,sizeof(a));50 int x,y,z;51 while(m--)52 {53 cin>>x>>y;54 a[x][y]=true;55 }56 int ans=maxP();57 printf("%d\n",ans);58 59 60 return 0;61 }
View Code

 

转载于:https://www.cnblogs.com/songorz/p/9526180.html

你可能感兴趣的文章
windows 安装 kalfka 并快速启动
查看>>
iOS-技巧性总结
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
MT5:放大市场价格指标
查看>>
对类前置声明和包含头文件的一点理解
查看>>
new delete
查看>>
浅谈弹性盒子布局
查看>>
vlan基本命令配置 trunk链路配置
查看>>
整理c#学习中的知识点
查看>>
[Swift]LeetCode637. 二叉树的层平均值 | Average of Levels in Binary Tree
查看>>
[Xcode 实际操作]九、实用进阶-(26)对Storyboard(故事版)中的文字标签(Label)进行本地化处理...
查看>>
PyQuery库的使用
查看>>
rally问题合集
查看>>
[Compose] 19. Leapfrogging types with Traversable
查看>>
[RxJS] Implement pause and resume feature correctly through RxJS
查看>>
[Javascript] Creating an Immutable Object Graph with Immutable.js Map()
查看>>
[TypeScript] Union Types and Type Aliases in TypeScript
查看>>
[Angular 2] BYPASSING PROVIDERS IN ANGULAR 2
查看>>
[算法题] 二维数组中的查找
查看>>
WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞
查看>>