二分 Asteroids
来源:互联网 发布:网络报警主机 编辑:程序博客网 时间:2024/06/06 03:03
Asteroids
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).
对于这道题还能用二分感到震惊,但是弄清最小顶点覆盖是什么觉得就该这样做,Orz;
|最大匹配数|=|最小顶点覆盖|
|最大匹配数|+||最小边覆盖|=|V|
|最大独立集|+|最小顶点覆盖|=|V|
#include<iostream>#include<algorithm>#include<string>#include<queue>#include<cmath>#include<vector>#include<stdlib.h>#include<iomanip>#include<list>#include<stack>#include<memory.h>#include<ctype.h>using namespace std;typedef long long ll;const int MAXN = 510;int uN, vN;int g[MAXN][MAXN];int linker[MAXN];bool used[MAXN];bool dfs(int u){int v;for (v = 0; v<uN; v++)if (g[u][v] && !used[v]){used[v] = true;if (linker[v] == -1 || dfs(linker[v])){linker[v] = u;return true;}}return false;}int hungary(){int res = 0;int u;memset(linker, -1, sizeof(linker));for (u = 0; u<uN; u++){memset(used, 0, sizeof(used));if (dfs(u)) res++;}return res;}int main(){int u, v;while (scanf("%d%d", &uN, &vN) != EOF){memset(g, 0, sizeof(g));while (vN--){scanf("%d%d", &u, &v);u--;v--;g[u][v] = 1;}printf("%d\n", hungary());}return 0;}
阅读全文
0 0
- 二分 Asteroids
- POJ3041 Asteroids(二分图)
- Asteroids--二分图
- Asteroids 二分图
- Asteroids(二分图匹配)
- Asteroids (二分图)
- POJ3041 Asteroids【二分匹配】
- Poj3041-Asteroids-【二分图】
- 【Asteroids】二分图
- [二分图]Asteroids
- POJ 3041 Asteroids 二分匹配
- poj3041--Asteroids(二分匹配)
- BOJ 3160 Asteroids //二分图水题
- 【POJ】3041 Asteroids 二分匹配
- Asteroids+POJ+二分图匹配
- poj 3041 Asteroids 二分图
- 【POJ 3041 Asteroids】+ 二分图
- POJ 3041 Asteroids(二分匹配)
- Linux系统基础(十二)
- babyos2(2)—— load elf format kernel
- VUE实现一个分页组件
- Windows下文件无法删除解决方法
- mysql随机生成字符串
- 二分 Asteroids
- vue.js 组件之间传递数据
- 深度优先搜索 hdu 1997 汉诺塔问题
- javascript 高级系列之变量提升与函数提升
- C#---接口
- Vue2.0 探索之路——生命周期和钩子函数的一些理解
- 第四次作业
- Eclipse 常用快捷键
- AttributeSet与TypeArray的关系