首页 > 代码库 > hdu 1281 棋盘游戏 (二分匹配)
hdu 1281 棋盘游戏 (二分匹配)
//是象棋里的车 符合二分匹配 # include<stdio.h> # include<algorithm> # include<string.h> using namespace std; int n,m,pp[110][110],map[110],vis[110]; int bfs(int x) { for(int i=1;i<=m;i++) { if(!vis[i]&&pp[x][i]) { vis[i]=1; if(!map[i]||bfs(map[i])) { map[i]=x; return 1; } } } return 0; } int f() { int a=0; memset(map,0,sizeof(map)); for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(bfs(i)) a++; } return a; } int main() { int i,j,k,cot1=0,ans,a,b; while(~scanf("%d%d%d",&n,&m,&k)) { memset(pp,0,sizeof(pp)); for(i=0;i<k;i++) { scanf("%d%d",&a,&b); pp[a][b]=1; } int cot=f(); ans=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(pp[i][j])//判断是否为重要点 { pp[i][j]=0; if(f()<cot) ans++; pp[i][j]=1; } } } printf("Board %d have %d important blanks for %d chessmen.\n",++cot1,ans,cot); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。