[题目链接]

https://www.luogu.org/problemnew/show/P1640

[算法]

二分图匹配

实现时需要常数优化和特判

[代码]

//code by byf and lmj
#include <bits/stdc++.h>
#define MAXN 2000005
using namespace std;
int n,tot=,match[MAXN],head[MAXN];
bool visited[MAXN];
struct edge
{
int to,nxt;
} e[MAXN << ];
template <typename T> inline void read(T &x)
{
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar())
{
if (c == '-') f = -f;
}
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline void addedge(int u,int v)
{
tot++;
e[tot] = (edge){v,head[u]};
head[u] = tot;
}
inline bool hungary(int u)
{
int v;
visited[u] = true;
for (register int i = head[u]; i; i = e[i].nxt)
{
v = e[i].to;
if (!visited[v])
{
visited[v] = true;
if (!match[v] || hungary(match[v]))
{
match[v] = u;
return true;
}
}
}
return false;
}
int main() {
read(n);
for (register int i = ; i <= n; ++i)
{
int a,b;
read(a); read(b);
addedge(a,i+n); addedge(b,i+n);
}
if (n <= 5E4)
{
for (register int i = ; i <= n; ++i)
{
memset(visited,false,sizeof(visited));
if (!hungary(i))
{
cout << i - << endl;
return ;
}
}
cout << n << endl;
return ;
}
for (register int i = ; i <= ; ++i)
{
for (register int j = ; j <= ; ++j) visited[j] = false;
if (!hungary(i))
{
cout << i - << endl;
return ;
}
}
cout << n << endl;
return ;
}

最新文章

  1. sql server实现自定义分割月功能
  2. RRD
  3. Android如何通过shareduserid获取系统权限
  4. 怎样让webservice在浏览器远程浏览时像在本地浏览一样有参数输入框
  5. JAVA学习Swing章节按钮组件JButton的简单学习
  6. 图片的copy,从一个目录复制到另一个目录
  7. sikuli+java实例
  8. P​H​P​ ​5​.​3​连​接​s​q​l​ ​s​e​r​v​e​r​ ​2​0​0​8​ ​R​2
  9. vim插件
  10. 怎样在VC里面使用graphics.h绘图
  11. ACE编译运行错误解决
  12. bootstrap&#39;s plugin:sthe usage of carousel
  13. Android使用本地广播
  14. Luogu P3355 骑士共存问题
  15. Php文件上传类class.upload.php
  16. WebView加载失败或网络异常时,替换WebView的错误界面;
  17. Windows XP UDF 2.5 补丁,播放蓝光ISO光盘必备
  18. R语法:&lt;&lt;-为全局变量赋值
  19. thinkphp报错Call to undefined method app\index\controller\Index::fetch()
  20. 如何查看ESXi的网卡的MAC地址?

热门文章

  1. Angular ZoneJS 原理
  2. 【原】Mysql常用语句
  3. linux vim 常用操作
  4. acm相关(纯转载)
  5. CSS 嵌入,及其选择器
  6. MyBatis 的基本要素—SQL 映射文件
  7. linux sar-系统运行状态统计工具
  8. chrome://plugins 无法打开的解决方法,同时解决“该网页已屏蔽插件-adobe flash player”
  9. SQL学习笔记:一些高级语句
  10. slf4j+log4j2的配置