HDU 1281 棋盘游戏(二分图匹配)
来源:互联网 发布:淘宝账号如何实名认证 编辑:程序博客网 时间:2024/05/18 17:59
解题思路:
枚举棋盘上所有格子,如果讲该点删除后,最大匹配数会减少,则该点为关键点。
#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int MAXN = 100 + 10;int G[MAXN][MAXN];int vis[MAXN];int match[MAXN];int n, m, k;int path(int u){ for(int v=1;v<=m;v++) { if(G[u][v] && !vis[v]) { vis[v] = 1; if(match[v] == -1 || path(match[v])) { match[v] = u; return 1; } } } return 0;}int MaxMatch(){ int res = 0; memset(match, -1, sizeof(match)); for(int i=1;i<=n;i++) { memset(vis, 0, sizeof(vis)); if(path(i)) res++; } return res;}int main(){ int kcase = 1; while(scanf("%d%d%d", &n, &m, &k)!=EOF) { int x, y; memset(G, 0, sizeof(G)); for(int i=1;i<=k;i++) { scanf("%d%d", &x, &y); G[x][y] = 1; } int ans = 0; int acc = MaxMatch(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(G[i][j]) { G[i][j] = 0; if(acc > MaxMatch()) ans++; G[i][j] = 1; } } } printf("Board %d have %d important blanks for %d chessmen.\n", kcase++, ans, acc); } return 0;}
0 0
- hdu 1281 棋盘游戏 二分图匹配
- hdu 1281 棋盘游戏 (二分图匹配)
- 【二分图匹配】hdu 1281 棋盘游戏
- 棋盘游戏 - HDU 1281 二分图匹配
- hdu 1281 棋盘游戏(二分图匹配)
- HDU 1281 棋盘游戏 二分图匹配
- hdu 1281 棋盘游戏 二分图匹配;
- hdu 1281 棋盘游戏 (二分匹配)
- hdu 1281 棋盘游戏(二分匹配)
- HDU 1281 棋盘游戏(二分匹配)
- HDU 1281 棋盘游戏(二分图匹配)
- hdu 1281 棋盘游戏(二分图匹配)
- HDU 1281 棋盘游戏(二分图匹配)
- HDU 1281 棋盘游戏(二分图匹配)
- HDU - 1281 - 棋盘游戏(二分图匹配)
- hdu 1281 棋盘游戏(枚举,二分图最大匹配)
- hdu 1281 棋盘游戏 (二分图最大匹配)
- HDU 1281 棋盘游戏(二分图匹配)
- 厦门展览制作工厂——环球汇展在C博客安家拉
- 关于分治法的时间复杂度
- 智能卡的发展,以及射频电子标签在其中所处的位置
- java中的变量
- 解决跨域访问问题
- HDU 1281 棋盘游戏(二分图匹配)
- Hive表和存储结构《三》
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 循环-15. 统计素数并求和(20)
- Ubuntu14.10下avi格式视频播放闪烁问题
- AXON简介
- Android开发的16条小经验总结
- 数组
- 二分查找