题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1054

简单二分匹配,根据题意构造一个无向图。然后求最小点覆盖,然后扫描mark数组将曾经匹配的点所匹配的边消去。

最小点覆盖 = 最大二分匹配

#include<stdio.h>
#include<string.h>
#define maxn 1505
struct node
{int v;node *next;
}*head[maxn],edge[maxn*maxn],*p;
int n,vis[maxn],mark[maxn];
bool dfs(int v)
{for(node *p = head[v]; p ; p = p->next){if(vis[p->v])continue;vis[p->v] = 1;if(mark[p->v] == -1 || dfs(mark[p->v])){mark[p->v] = v;return true;}}return false;
}
int main()
{int num,v,u,i,j;while(scanf("%d",&n) != EOF){memset(head,NULL,sizeof(head));p = edge;for(i = 0; i < n; i++){scanf("%d:(%d)",&u,&num);for(j = 0; j < num; j++){scanf("%d",&v);p->v = v;p->next = head[u];head[u] = p++;p->v = u;p->next = head[v];head[v] = p++;}}memset(mark,-1,sizeof(mark));int ans = 0;for(i = 0; i < n; i++){memset(vis,0,sizeof(vis));if(dfs(i))ans++;}//减去已有的边。。。for(i = 0; i < n; i++){if(mark[i] != -1){for(j = i+1; j < n; j++)if(mark[j] == i){mark[j] = -1;ans--;}}}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/LUO257316/archive/2012/09/08/3220833.html

hdu 1054 Strategic Game 最小点覆盖 = 最大二分匹配相关推荐

  1. HDU 1054 Strategic Game 最小点覆盖

     最小点覆盖概念:选取最小的点数覆盖二分图中的所有边. 最小点覆盖 = 最大匹配数. 证明:首先假设我们求的最大匹配数为m,那么最小点覆盖必然 >= m,因为仅仅是这m条边就至少需要m个点.然后 ...

  2. HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...

  3. hdu 1054 Strategic Game 二分图最小点覆盖

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意: 给出一个无向图,求最小点覆盖. 思路: 用网络流来做设立一个超级源点和一个超级汇点. 每 ...

  4. HDU——1054 Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. HDU - 3360 National Treasures(最小点覆盖-二分图最大匹配+奇偶拆点)

    题目链接:点击查看 题目大意:给出一个n*m的矩阵,每个点都有一个权值,-1表示该格子为警卫,否则表示该格子有宝物: 当前点的权值二进制为1的地方代表需要一个警卫(编号为二进制从右往左数的位置),警卫 ...

  6. HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...

  7. hdu 1054 Strategic Game

    http://acm.hdu.edu.cn/showproblem.php?pid=1054 树形DP 主要是把思路屡清楚 选个根结点进行向下搜 每个点都有两种可能 放士兵还是不放 防止重复搜索就可以 ...

  8. HDU - 1054 Strategic Game (二分图匹配模板题)

    二分图匹配模板题 #include <bits/stdc++.h> #define FOPI freopen("in.txt", "r", stdi ...

  9. HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)

    You're giving a party in the garden of your villa by the sea. The party is a huge success, and every ...

最新文章

  1. 给定直角坐标上的两条线,确定这两条线会不会相交
  2. Class与Style绑定
  3. MinGW-W64安装及其使用
  4. Git的commit之后的撤销reset
  5. recorder-list
  6. 图书推荐:《ASP.NET.基础教程——C#案例版》
  7. ssm框架下web项目,web.xml配置文件的作用(详解)
  8. 计算机c语言知识点txt,计算机二级C语言(重要知识点)
  9. 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
  10. Nodejs gRPC client 使用typescript
  11. 刷新计算机dns缓存的命令,电脑如何刷新dns缓存【图解】
  12. Dos Cmd命令整理
  13. 【随笔】方波的表示、转换与应用
  14. 池化方法总结(Pooling) 和卷积 。 第三部分讲的很好
  15. 袁萌浅谈C919大飞机(三)
  16. 重新定义汽车人机界面开发,Unity HMI模板正式开放使用
  17. 心率脉搏测试c语言算法,基于51单片机语音播报心率计脉搏测量仪设计(仿真源码+电路图+当时PaperPass16%查重论文)...
  18. Python爬虫实战(五) :下载百度贴吧帖子里的所有图片
  19. 智慧树python程序设计基础山东联盟期末答案_2020智慧树Python程序设计基础(山东联盟)期末答案...
  20. 一些SQL数据库技巧

热门文章

  1. 解说redis中如何实现高可用
  2. 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例
  3. django+nginx+uwsgi部署web站点
  4. iOS开发--验证码
  5. JAVA中toString方法的作用(转)
  6. 修改终端服务端口的方法
  7. IT 事业发展:树立自己的品牌
  8. java泛型中的E,K,V,T,U,S
  9. 进制转换中dbho是什么意思_什么是网段?二进制十进制如何互相转换?看完这篇,你就全明白了...
  10. 三校生计算机对口本科有哪些学校,宝山三校生五月对口高考报名