博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1281 棋盘游戏
阅读量:4647 次
发布时间:2019-06-09

本文共 957 字,大约阅读时间需要 3 分钟。

传送门:

解题思路:

这是一道二分匹配的问题,把坐标(x,y)看做一条边。

先求出最大的匹配数,在枚举删除每一条边,若匹配数减少,这条边就是关键边,也是关键点。

实现代码;

#include 
#include
#include
#include
using namespace std;const int MAXN=105;int G[MAXN][MAXN];bool used[MAXN];int cx[MAXN],cy[MAXN];int N;bool findpath(int u){ for(int i=1;i<=N;i++){ if(!used[i]&&G[u][i]){ used[i]=1; if(cy[i]==-1||findpath(cy[i])){ cx[u]=i; cy[i]=u; return 1; } } } return 0;}int MaxMatch(){ memset(cx,-1,sizeof(cx)); memset(cy,-1,sizeof(cy)); int res=0; for(int i=1;i<=N;i++) if(cx[i]==-1){ memset(used,0,sizeof(used)); res+=findpath(i); } return res;}int main(){ int M,K; int cnt=0; while(scanf("%d%d%d",&N,&M,&K)!=EOF){ memset(G,0,sizeof(G)); for(int i=0;i

 

转载于:https://www.cnblogs.com/IKnowYou0/p/6549520.html

你可能感兴趣的文章
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
MyEclipse安装Freemarker插件
查看>>
计算多项式的值
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>