bzoj 1693: [Usaco2007 Demo]Asteroids(二分匹配)
来源:互联网 发布:鼎盈人工智能 编辑:程序博客网 时间:2024/06/05 05:10
1693: [Usaco2007 Demo]Asteroids
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 285 Solved: 212
[Submit][Status][Discuss]
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.
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
题意:有一个n*m的网格,网格中有k个怪物,你有一把激光枪,每次可以消灭一行或一列上的所有怪物,求消灭所有怪物的最少使用次数
二分匹配,所有的行作为左半部分的点,所有的列作为右半部分的点,如果点(i, j)上有个怪物,那么左边的第i个点和右边的第j个点连一条边,之后求最大匹配就是答案
#include<stdio.h>#include<string.h>int n, road[505][505], vis[505], link[505];int Sech(int x);int main(void){int i, a, b, k, ans = 0;scanf("%d%d", &n, &k);for(i=1;i<=k;i++){scanf("%d%d", &a, &b);road[a][b] = 1;}for(i=1;i<=n;i++){memset(vis, 0, sizeof(vis));if(Sech(i)==1)ans++;}printf("%d\n", ans);return 0;}int Sech(int x){int i;for(i=1;i<=n;i++){if(vis[i]==0 && road[x][i]==1){vis[i] = 1;if(link[i]==0 || Sech(link[i])==1){link[i] = x;return 1;}}}return 0;}
阅读全文
1 0
- bzoj 1693: [Usaco2007 Demo]Asteroids(二分匹配)
- BZOJ 1693 [Usaco2007 Demo]Asteroids 最大流
- BZOJ[1693][Usaco2007 Demo]Asteroids 网络流
- BZOJ1693: [Usaco2007 Demo]Asteroids
- poj3041--Asteroids(二分匹配)
- poj 3041 Asteroids (二分匹配)
- poj 3041 Asteroids (二分匹配)
- POJ 3041 Asteroids(二分匹配-hungary)
- POJ 3041-Asteroids(二分图匹配)
- POJ3041-Asteroids(二分图匹配)
- POJ 3041 Asteroids(二分图匹配)
- POJ 3041 Asteroids (二分匹配)
- 【POJ】-3041-Asteroids(二分最大匹配)
- poj 3041 Asteroids (二分匹配)
- POJ3041:Asteroids(二分图匹配)
- POJ 3041 Asteroids(二分匹配)
- Asteroids(二分图匹配)
- POJ3041 Asteroids【二分匹配】
- RHCS高可用集群配置(luci+ricci+fence)
- AngularJS开发WebApp的自适应处理方式
- 有两个List,将两个List里的数据作笛卡尔积
- python 基本语法
- SQL Server 2016安装教程
- bzoj 1693: [Usaco2007 Demo]Asteroids(二分匹配)
- Python Learning_0
- 【nyoj1274/zzuli1925】信道安全(SPFA+vector)
- [leetcode]解决Kth Largest Element in an Array的一点小心得
- C# System.Type.GetMethod 方法需要注意的问题
- 108. Convert Sorted Array to Binary Search Tree
- jQuery操作select下拉框(增加,删除,修改)
- Java基础之集合框架--Collections工具类之max()方法
- flask安装