poj1281 棋盘游戏
来源:互联网 发布:什么是虚拟光驱软件 编辑:程序博客网 时间:2024/05/19 13:30
这题应该算是一道比较简单的二分图问题,可是我压根还是没想到二分图,一看解题报告说用二分图,再一琢磨就明白了。。。。就是求二分图的最大匹配和关键匹配
code:
#include <cstdio>#include <cstring>using namespace std;int n,m,k;int link[101];bool graph[101][101],vis[101];struct pos{ int x,y;}p[101*101];bool find(int x){ int y; for(y=1;y<=m;y++) { if(graph[x][y] && !vis[y]) { vis[y]=true; if(link[y]==0 || find(link[y])) { link[y]=x; return true; } } } return false;}int solve(){ int x,ans=0; memset(link,0,sizeof(link)); for(x=1;x<=n;x++) { memset(vis,false,sizeof(vis)); if(find(x)) { ans++; } } return ans;}int main(){ int i,ans,cnt,cas=0; while(~scanf("%d%d%d",&n,&m,&k)) { cnt=0; memset(graph,false,sizeof(graph)); for(i=1;i<=k;i++) { scanf("%d%d",&p[i].x,&p[i].y); graph[p[i].x][p[i].y]=true; } ans=solve(); for(i=1;i<=k;i++) { graph[p[i].x][p[i].y]=false; if(solve()<ans) { cnt++; } graph[p[i].x][p[i].y]=true; } printf("Board %d have %d important blanks for %d chessmen.\n",++cas,cnt,ans); } return 0;}
- poj1281 棋盘游戏
- poj1281
- POJ1281
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- 棋盘游戏
- hdu 1281棋盘游戏
- hdoj 1281 棋盘游戏
- hdu 1281 棋盘游戏
- 16_6棋盘游戏
- 最早的棋盘游戏
- 1108:棋盘游戏
- 题目1091:棋盘游戏
- C语言数组清空的几种方法比较
- 创业三十六条军规
- IIS中http头的作用
- oracle分组查询第一条记录和每组的个数
- UIView层次管理
- poj1281 棋盘游戏
- 但却沉着平跟
- 预防死锁的方法
- Linux设备模型之tty驱动架构分析
- vim插入行号
- 关于逻辑表达式的“短路效应”
- ios5动态获取键盘高度
- 可重入和不可重入
- 使用GetText本地化编程