poj 2446 Asteroids
来源:互联网 发布:js获取单选框选中属性 编辑:程序博客网 时间:2024/05/18 01:06
Description
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.
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.
* 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).
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).
一开始没反应过来,这个图的关系可以转化一下,将x的看成1到n的结点,将y也看成1到n的结点,如果该点存在行星,那么就将它所在的行,列结点划上连线,表示两点之间连通。
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>using namespace std;#define N 501int vis[N],link[N],match[N][N];int n,k;void init(){ memset(link,-1,sizeof(link)); memset(match,0,sizeof(match));}int dfs(int c){ int i; for (i=1;i<=n;i++) { if (vis[i]==0&&match[c][i]) { vis[i]=1; if (link[i]==-1||dfs(link[i])) { link[i]=c; return 1; } } } return 0;}int main(){ int i; while (~scanf("%d%d",&n,&k)) { int num,p,q; init(); for (i=1;i<=k;i++) { scanf("%d%d",&p,&q); match[p][q]=1; } int cnt=0; for (i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if (dfs(i)) cnt++; } printf("%d\n",cnt); } return 0;}
0 0
- poj 2446 Asteroids
- POJ 3041 Asteroids
- poj 3041 Asteroids
- POJ-3041 Asteroids
- Poj 3041 Asteroids
- poj 3041 Asteroids
- poj 3041 Asteroids
- POJ:3041Asteroids
- POJ-3040-Asteroids
- poj 3041 Asteroids
- POJ 2225 - Asteroids!
- POJ 3041 Asteroids
- POJ 3041 Asteroids
- POJ 3041 Asteroids
- poj 3014 Asteroids
- POJ 3041 Asteroids
- POJ 3041 Asteroids
- poj 3041-Asteroids
- Java堆.栈和常量池
- java 遍历arrayList的四种方法
- 编写可维护的 JavaScript 笔记 (11
- Java线程池自学手册Executor的使用
- codeforces contest/796/problem/D
- poj 2446 Asteroids
- 复数的运算(类和对象)
- 习题2-6 排列
- Node.js 报语法错误 SyntaxError: Unexpected identifier
- spring 调用层次解析思路
- 机试算法题(2)--成绩排序
- 上传本地项目到github
- Rotate List
- J