hdu 1281 二分匹配
来源:互联网 发布:九阴绝学兽魂进阶数据 编辑:程序博客网 时间:2024/04/29 11:16
题意:
在图上给出一些点,安放车,让其不相互攻击,求车的最大值!!并求出那些点不可代替!!
构图:
将各自的x,y坐标提出了,建立边!!xi,yi边的匹配的最大值就是车的数量!!!删除每条边,如果车的数量有所减少则是不可替代的车!!
代码:
#include<iostream>#include<cstdio>#include<memory.h>#include<algorithm>using namespace std;int vis[102],mat[102];int n,m,k,tx,ty,x[102],y[102];int f[1002][1002];int find(int x){ for(int i=f[x][0]; i>=1; i--) { int y=f[x][i]; if(!vis[y]) { if(x==tx&&y==ty) continue; vis[y]=1; if(mat[y]==-1||find(mat[y])) { mat[y]=x; return 1; } } } return 0;}int main (){ int i,j,t; int m,n,k,ans,cas=1; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { memset(f,0,sizeof(f)); memset(mat,-1,sizeof(mat)); ans=0; int Max=0; tx=-1,ty=-1; for(i=1; i<=k; i++) { scanf("%d %d",&x[i],&y[i]); f[x[i]][++f[x[i]][0]]=y[i]; } for(i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); if(find(i)) Max++; } int imp=0; for(i=1; i<=n; i++) { for(t=f[i][0]; t>=1; t--) { memset(mat,-1,sizeof(mat)); ans=0; tx=i;ty=f[i][t]; for(j=1; j<=n; j++) { memset(vis,0,sizeof(vis)); if(find(j))ans++; } if(ans<Max) imp++; } } printf("Board %d have %d important blanks for %d chessmen.\n",cas++,imp,Max); } return 0;}/*3 3 41 21 32 12 23 3 41 22 32 13 2*/
- 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 棋盘游戏-二分匹配
- nyist 吝啬的国度(二维vector搜索)
- C/C++二级指针越界判断
- 转载和积累系列 - Linux Yum 相关
- Internet Minimum MTU: 576 Bytes
- 康奈尔大学做笔记方法,让效率提高100%@
- hdu 1281 二分匹配
- run linux command within firefox
- Irrlicht引擎源码剖析——第二天
- 命令行快速进阶(六)Ubuntu中对压缩文件的操作和处理
- CSS Box模型
- 说明一下
- hdu 3790 最短路径问题
- 命令行快速进阶(七)通过byobu使用多个命令终端
- gdbserver远程调试的具体实现