hdu 1845(最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1845
思路:匈牙利算法应用,900ms+险过。(好像直接n/2就行)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 #define MAXN 5555 8 vector<int>map[MAXN]; 9 int n,m,ans; 10 bool mark[MAXN]; 11 int lx[MAXN],ly[MAXN]; 12 13 int dfs(int u){ 14 for(int i=0;i<map[u].size();i++){ 15 int v=map[u][i]; 16 if(!mark[v]){ 17 mark[v]=true; 18 if(ly[v]==-1||dfs(ly[v])){ 19 ly[v]=u; 20 lx[u]=v; 21 return 1; 22 } 23 } 24 } 25 return 0; 26 } 27 28 29 int main(){ 30 // freopen("1.txt","r",stdin); 31 int _case,u,v; 32 scanf("%d",&_case); 33 while(_case--){ 34 scanf("%d",&n);m=n*3/2;ans=0; 35 for(int i=1;i<=n;i++)map[i].clear(); 36 for(int i=1;i<=m;i++){ 37 scanf("%d%d",&u,&v); 38 map[u].push_back(v); 39 map[v].push_back(u); 40 } 41 memset(lx,-1,(n+2)*sizeof(lx[0])); 42 memset(ly,-1,(n+2)*sizeof(ly[0])); 43 for(int i=1;i<=n;i++){ 44 if(lx[i]==-1){ 45 memset(mark,false,(n+2)*sizeof(mark[0])); 46 ans+=dfs(i); 47 } 48 } 49 printf("%d\n",ans/2); 50 } 51 return 0; 52 }
View Code
hdu 1845(最大匹配)相关推荐
- hdu 2063+hdu 1083(最大匹配数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配水题,求最大匹配数(即求边数最多的匹配),匈牙利算法实现.. View Code 1 # ...
- hdu 1507(最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1507 思路:这题关键是建图,我们可以把坐标映射建双向图,最后求得的最大匹配数/2就ok了. 1 #in ...
- ACM 图论入门题(附代码解释)
目录 HDU 1869 六度分离 HDU 1874 畅通工程续 (最短路) HDU 3339 In Action (最短路+01背包) HDU 1162 Eddy's picture(prime算法) ...
- [kuangbin]各种各样的题单
[kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- hdu 3729(二分图最大匹配+最大字典序)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3729 解题思路:节点i对Xi~Yi之间的每一个点都连一条边,这样问题就转化成二分图的最大匹配了.字典序 ...
- hdu 2444(二分图的判断以及求最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2444思路:首先要判断能否构成二分图,用bfs对当前点u染色,对u的邻接点v的颜色进行判断,如果为染色, ...
- HDU 1281 棋盘游戏 【二分图最大匹配】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题意概括: 有N*M大的棋盘,要在里面放尽量多的"车",求最多能放的车的个数, ...
- HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)
HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...
最新文章
- 分式的二阶导数怎么求_高考数学导数大题如何抢分? 名师手把手教你! 高一高二也要看...
- 12c expdp ORA-31623 -又遇到BUG
- Amazon DynamoDB 入门2:工作原理、API和数据类型介绍
- DIV + CSS 神话
- 自己的php工具,用PHP自己编写的站长工具箱
- Java 程序执行过程的内存流程图(结合类加载器 ClassLoader 讲解)
- 易盛极星期货量化教学
- 关于Mysql模糊查询下划线的问题
- CentOS7 扩容时发现 /dev/mapper/centos-home 不存在,创建后登录终端显示 -bash-4.2
- 作业帮冯雪胡不归问题_作业帮学习平台微信服务号关注
- 2022年度GitHub中文Java项目排行榜Top 10
- 自然语言处理之分词、命名主体识别、词性、语法分析-stanfordcorenlp-NER(二)
- 数据库中的SCHEMA到底是什么?MySQL
- NFS 服务端配置流程
- c语言 中的求和函数,0基础理解C语言调用汇编实现求和函数
- chromecast 协议_Chromecast和Android TV有什么区别?
- 互联网起源之工人阶级
- UDP网络基础知识简介
- 记一次阿里云木马排查过程
- 和异性合租是什么样的体验?