HDU 1151 Air Raid( 最小路径覆盖 )
来源:互联网 发布:国家旅游局2015年数据 编辑:程序博客网 时间:2024/05/28 05:16
这道题是很经典的最小路径覆盖问题。最小路径覆盖,是指在有向无环图中,选择最少的点作为起点,使得遍历图中所有的点有且仅有一次。因此,每个单独的顶点可以看做是一条路径。最小路径覆盖=N-原图的最大二分匹配数。
代码:
#include <cstdio>#include <cstring>const int N = 150;int n, m;int bmap[N][N], cy[N];bool vis[N];bool dfs( int u ) { for( int i = 1; i <= n; ++i ) if ( bmap[u][i] && !vis[i] ) { vis[i] = 1; if ( cy[i] == -1 || dfs( cy[i] )) { cy[i] = u; return 1; } } return 0;}int match(){ int res = 0; memset( cy, -1, sizeof(cy)); for ( int i = 1; i <= n; ++i ) { memset( vis, 0, sizeof(vis)); if ( dfs(i) ) res++; } return res;}int main(){ int T; scanf("%d", &T); while ( T-- ) { scanf("%d%d", &n, &m); memset(bmap, 0, sizeof(bmap)); while ( m-- ) { int u, v; scanf("%d%d", &u, &v); bmap[u][v] = 1; } printf("%d\n", n - match()); }}
- hdu 1151 Air Raid最小路径覆盖
- hdu 1151 Air Raid (最小路径覆盖)
- HDU 1151 Air Raid( 最小路径覆盖 )
- hdu 1151 Air Raid ( 最小路径覆盖 )
- Air Raid hdu 1151 最小路径覆盖
- [hdu 1151] Air Raid(最小路径覆盖)
- HDU 1151 Air Raid 最小路径覆盖
- HDU 1151 Air Raid【最小路径覆盖】
- HDU 1151 Air Raid (最小路径覆盖)
- HDU 1151 Air Raid( 最小路径覆盖)
- [HDU 1151] Air Raid 最小路径覆盖
- hdu 1151 Air Raid 最小路径覆盖
- hdu 1151 Air Raid【最小路径覆盖】
- HDU- 1151 Air Raid(最小路径覆盖)
- hdu Air Raid(最小路径覆盖)
- HDU Air Raid 最小路径覆盖
- HDU 1151 Air Raid(最小路径覆盖)
- hdu 1151 Air Raid(最小路径覆盖)
- js实现HashMap功能代码
- 在Eclipse中查看JDK源码的设置
- windows四种编码方式
- Linux文件属性详细说明
- 联合查询
- HDU 1151 Air Raid( 最小路径覆盖 )
- linux scp命令
- Python笔记
- 3D打印机开源项目遭克隆或成开源拐点
- winfrom无边框窗体拖动
- 迭代器模式
- 后PC时代的发展
- 大数据存储方案(面试必考,需要搞懂)
- 编写 Objective-C 代码---[苹果官方文档]