hdu1054(二分图匹配)
题意很简单,在一颗树上找最小点覆盖。
将树染成黑白两色,构成一张二分图,然后最大匹配==最小点覆盖即可,所以一次匈牙利就可以求出来了
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <algorithm>
- #include <string>
- #include <queue>
- #include <vector>
- #include <stdlib.h>
- using namespace std;
- #define N 1505
- int n;
- struct node
- {
- int to,next;
- }edge[N*];
- vector<int>g[N];
- int pre[N],cnt;
- int cao[N],a[N],b[N];
- int cnta,cntb;
- int mark[N],frt[N];
- void add_edge(int u,int v)
- {
- edge[cnt].to=v;
- edge[cnt].next=pre[u];
- pre[u]=cnt++;
- }
- void Dfs(int s,int fr,int flag)
- {
- if(flag==)
- {
- cao[s]=cnta;
- a[cnta]=s;
- cnta++;
- }else
- {
- cao[s]=cntb;
- b[cntb]=s;
- cntb++;
- }
- for(int p=pre[s];p!=-;p=edge[p].next)
- {
- int v=edge[p].to;
- if(v==fr) continue;
- Dfs(v,s,flag^);
- }
- }
- int dfs(int s)
- {
- for(int i=;i<g[s].size();i++)
- {
- int v=g[s][i];
- if(mark[v]==) continue;
- mark[v]=;
- if(frt[v]==-||dfs(frt[v]))
- {
- frt[v]=s;
- return ;
- }
- }
- return ;
- }
- int main()
- {
- while(scanf("%d",&n)!=EOF)
- {
- cnt=;
- memset(pre,-,sizeof(pre));
- for(int i=;i<n;i++)
- {
- int x;
- scanf("%d",&x);
- int num;
- scanf(":(%d)",&num);
- for(int j=;j<num;j++)
- {
- int y;
- scanf("%d",&y);
- add_edge(x,y);
- add_edge(y,x);
- }
- }
- //然后就是染色了
- cnta=; cntb=;
- Dfs(,-,);
- //然后再建一张图
- for(int i=;i<cnta;i++)
- {
- g[i].clear();
- for(int p=pre[a[i]];p!=-;p=edge[p].next)
- {
- int v=edge[p].to;
- g[i].push_back(cao[v]);
- }
- }
- int ans=;
- memset(frt,-,sizeof(frt));
- for(int i=;i<cnta;i++)
- {
- memset(mark,,sizeof(mark));
- ans+=dfs(i);
- }
- printf("%d\n",ans);
- }
- return ;
- }
hdu1054(二分图匹配)的更多相关文章
- UVA 12549 - 二分图匹配
题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会 ...
- POJ 1274 裸二分图匹配
题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #includ ...
- BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Sta ...
- HDU1281-棋盘游戏-二分图匹配
先跑一个二分图匹配,然后一一删去匹配上的边,看能不能达到最大匹配数,不能这条边就是重要边 /*----------------------------------------------------- ...
- HDU 1083 网络流之二分图匹配
http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...
- hdu 5727 Necklace dfs+二分图匹配
Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...
- BZOJ 1059 & 二分图匹配
题意: 判断一个黑白染色的棋盘能否通过交换行或列使对角线上都是黑色. SOL: 真是有点醉...这种问题要么很神要么很水...第一眼感觉很水但就是不造怎么做...想了10分钟怎么感觉就是判断个数够不够 ...
- 【POJ 3020】Antenna Placement(二分图匹配)
相当于用1*2的板覆盖给定的h*w的格子里的点,求最少的板.可以把格子相邻的分成两个集合,如下图,0为一个集合,1的为一个,也就是(行数+列数)为奇数的是一个集合,为偶数的为另一个集合.1010101 ...
- BZOJ-1143&&BZOJ-2718 祭祀river&&毕业旅行 最长反链(Floyed传递闭包+二分图匹配)
蛋蛋安利的双倍经验题 1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1901 Solved: 951 ...
随机推荐
- JavaScript之工厂方式 构造函数方式 原型方式讲解
一.工厂方式可以为一个对象,创建多个实例. var oCar = new Object; oCar.color = "red"; oCar.doors=4; oCar.mpg=23 ...
- 较复杂js的书写格式
我们看较复杂的js程序最怕结构混乱,一个好的js书写结构,在很大程度上可以减缓阅读的障碍性. 我感觉一个良好的结构要有两点:一是要有一个统一的入口,这样就保证了程序的可阅读性:二是要能够灵活的设置参数 ...
- ios 5
1.屏幕尺寸568×2/320×2 需要一张568h@2x.png的图片. 2.iOS5不支持udid,用uuid替代,取得uuid方法: -(NSString*) uuid { CFUUIDRef ...
- ASP.NET制作一个简单的等待窗口
前一阵做一个项目,在处理报表的时候时间偏长,客户提出要做出一个等待窗口提示用户等待(页面太久没反映,用户还以为死了呢).在分析这一需求之后,觉得如果要实现像winform应用中的processbar太 ...
- 你用什么工具开发JavaScript?
Cloud9的CFO曾经在LinkedIn上面发起一个调查,原标题为:What tools do you use for Node.js development?,回贴者甚多. 目测很多人都使用VIM ...
- 使用 Microsoft Word 发布博客文章
以 Microsoft Word 2010 为例: 依次选择:文件 -> 保存并发送 -> 发布为博客文章 配置说明:新建账户 的 博客文章 URL 一栏填写 http://rpc.cn ...
- 安装hbase-0.98.9-hadoop2
1. download http://124.202.164.13/files/1244000005C563FC/www.eu.apache.org/dist/hbase/stable/hbase-0 ...
- DirectShow学习笔记
DirectShow, as you might have guessed, is a COM based multimedia framework that makes the task of ca ...
- js调试-定位到函数所在文件位置
原文:http://www.cnblogs.com/52cik/p/js-console-show-source.html 在控制台输入要查找的函数名如votePost 然后回车: 函数源码粗显啦,并 ...
- JSON.stringify 函数 (JavaScript)
在bsrck项目中,使用jQuery.Form.js的ajaxSubmit时,遇到有文件上传的form提交,在firefox和chrome浏览器中测试,报Bad Request的错误,经查代码后发现是 ...