hdu 1151 Air Raid
来源:互联网 发布:Android悬浮窗源码 编辑:程序博客网 时间:2024/06/07 08:25
主题思想: DAG 有向无环图,最少路径覆盖
本质二分图最大匹配问题
二分图最大匹配数=最小点覆盖数DAG最少路径覆盖数=DAG顶点数-二分图最大匹配数。特别的 无向图的最大匹配数需要除以2。且顶点是全体。
AC代码:
#include <iostream>#include<cstring>#include<cstdio>#include<vector>using namespace std;const int maxn=125;vector<int> g[maxn];int n,k;bool visited[maxn];int matched[maxn];bool dfs(int v){ for(vector<int>::iterator it=g[v].begin();it!=g[v].end();it++){ int w=*it; if(!visited[w]){ visited[w]=true; if(matched[w]==-1||dfs(matched[w])){ matched[w]=v; return true; } } } return false;}int hungarian(){ // only 0 ,-1 can use memset // if the array is not char array(single byte) memset(matched,-1,sizeof(matched)); int total=0; for(int i=1;i<=n;i++){ memset(visited,false,sizeof(visited)); if(dfs(i)) total++; } return total;}int main(){ int T; scanf("%d",&T); int ans=0; while(T--){ scanf("%d%d",&n,&k); //init for(int i=1;i<=n;i++)g[i].clear(); int s,e; for(int i=0;i<k;i++){ scanf("%d%d",&s,&e); g[s].push_back(e); } ans=n-hungarian(); printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- HDU 1151 Air Raid
- HDU 1151Air Raid
- Hdu 1151 - Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- HDU 1151 Air Raid
- HDU 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu/hdoj 1151 Air Raid
- hdu 1151 Air Raid 匹配
- hdu acm 1151 Air Raid
- POJ 1422/ HDU 1151 Air Raid
- hdu 1151 Air Raid (二分匹配)
- 2010-2011 ACM-ICPC, NEERC, Southern Subregional Contest E
- Xamarin.Forms 基础——Behavior+EffectBehavior
- 自己动手写操作系统:1.cpu中寄存器、汇编语言及其它基础知识
- 自定义进度条
- QT pro文件解析
- hdu 1151 Air Raid
- 阿里云服务器安装WordPress,搭建自己的博客网站
- POJ-1733Parity game
- 树状数组-随笔
- Xamarin.Forms 基础——Behavior——EventToCommandBehavior
- 二叉树的深度
- 大一最后一次正式比赛有感
- UVA 818 Cutting Chains (暴力二级制枚举+dfs)
- 起航——再出发