HUST 2604

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std; const int N = 300010;
const int MAXM = 300010;
const int INF = 0x3f3f3f3f; int dist[N<<1],mx[N],my[N],m,n;
vector<int> mp[N];
int que[N<<1],head,tail;
int bfs()
{
int i;
head=0;
tail=-1;
for(i=1; i<=n; i++)
if(mx[i]==-1) que[++tail]=i;
for(i=0; i<=m+n; i++) dist[i]=0;
int flag=0;
while(head<=tail)
{
int u=que[head++];
for(i=0; i<mp[u].size(); i++)
{
int v=mp[u][i];
if(dist[n+v]==0)
{
dist[n+v]=dist[u]+1;
if(my[v]!=-1)
{
dist[my[v]]=dist[n+v]+1;
que[++tail]=my[v];
}
else flag=1;
}
}
}
return flag;
}
int dfs(int u)
{
for(int i=0; i<mp[u].size(); i++)
{
int v=mp[u][i];
if(dist[u]+1==dist[v+n])
{
int t=my[v];
dist[v+n]=0;
if(t==-1||dfs(t))
{
my[v]=u;
mx[u]=v;
return 1;
}
}
}
return 0;
}
int H_K()
{
int i;
for(i=0; i<=n; i++)
mx[i]=-1;
for(i=0; i<=m; i++)
my[i]=-1;
int ans=0;
while(bfs())
{
for(i=1; i<=n; i++)
if(mx[i]==-1&&dfs(i)) ans++;
}
return ans;
} template <class T>
inline bool scan_d(T &ret)
{
char c;
int sgn;
if(c=getchar(),c==EOF) return 0; //EOF
while(c!='-'&&(c<'0'||c>'9')) c=getchar();
sgn=(c=='-')?-1:1;
ret=(c=='-')?0:(c-'0');
while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
ret*=sgn;
return 1;
}
inline void out(int x)
{
if(x>9) out(x/10);
putchar(x%10+'0');
} int main()
{
//int n,m;
//scanf("%d%d",&n,&m);
scan_d(n);
scan_d(m);
int u,v;
for(int i=0; i<m; ++i)
{
//scanf("%d%d",&u,&v);
scan_d(u);
scan_d(v);
mp[u].push_back(v);
} printf("%d\n",n-H_K()); return 0;
}

HK算法模板+小优化(跑的快一点点)的更多相关文章

  1. hdu 2389(二分图hk算法模板)

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  2. 小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化)--转载

    小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化)   在上回<小波学习之一>中,已经详细介绍了Mallat算法C++实现,效果还可以,但也存在一些问题,比如,代码 ...

  3. [Bzoj2039]小Z的袜子 (莫队算法模板题)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 11866  Solved: 5318[Sub ...

  4. HDU 2389 Rain on your Parade 最大匹配(模板题)【HK算法】

    <题目链接> 题目大意:有m个宾客,n把雨伞,预计时间t后将会下大雨,告诉你每个宾客的位置和速度,每把雨伞的位置,问你最多几个宾客能够拿到伞. 解题分析: 本题就是要我们求人与伞之间的最大 ...

  5. 模板小程序】求小于等于N范围内的质数

    xiaoxi666 联系邮箱: xiaoxi666swap@163.com 博客园 首页 新随笔 联系 订阅 管理 [模板小程序]求小于等于N范围内的质数   1 //筛法求N以内的素数(普通法+优化 ...

  6. 图的最短路算法 Dijkstra及其优化

    单源最短路径算法 时间复杂度O(N2) 优化后时间复杂度为O(MlogN)(M为图中的边数 所以对于稀疏图来说优化后更快) 不支持有负权的图 #include<iostream> usin ...

  7. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

  8. poj 1274 The Perfect Stall【匈牙利算法模板题】

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 942 ...

  9. SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。

    这里的高斯模糊采用的是论文<Recursive implementation of the Gaussian filter>里描述的递归算法. 仔细观察和理解上述公式,在forward过程 ...

随机推荐

  1. android_checkbox_dialog 设计 是不是要开起 默认不提示对话框

    android_checkbox_dialog设计是不是开起默认不提示 package com.example.android_checkbox_dialog; import android.app. ...

  2. mysql (primary key)_(unique key)_(index) difference

    MYSQL  index  MYSQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找 ...

  3. 数据结构与算法之贪心算法 C++实现

    1.基本思路:从问题的某一个初始解触发逐步逼近给定的目标,以尽可能快的求得更好的解. 当达到算法中某一步不能再继续前进时.就停止算法,给出近似值.也就是说贪心算法并不从总体最优考虑,它所作出的选择仅仅 ...

  4. Appium basic UI check cases_from sample

    @Test public void testUIComputation() throws Exception { // populate text fields with values populat ...

  5. C/C++用状态转移表联合函数指针数组实现状态机FSM

    状态机在project中使用很的频繁,有例如以下常见的三种实现方法: 1. switch-case 实现.适合简单的状态机. 2. 二维状态表state-event实现.逻辑清晰.可是矩阵通常比較稀疏 ...

  6. 2016/06/16 phpexcel

      程序部分   require_once './phpexcel/PHPExcel.php';   // 首先创建一个新的对象  PHPExcel object $objPHPExcel = new ...

  7. 2017 Multi-University Training Contest - Team 1 (5/12)

    官方题解 1001. Add More Zero #pragma comment(linker, "/STACK:1024000000,1024000000") #include& ...

  8. ivy

    ivy https://ant.apache.org/ivy/ Apache Ivy™ is a popular dependency manager focusing on flexibility ...

  9. UIPageControll 的属性和用法

    UIPageControll 是继承于UIControl的一个IOS系统UI控件,可以提供给开发者设计分页效果的功能. 初始化方法 UIPageControl * page = [[UIPageCon ...

  10. Java 深拷贝浅拷贝 与 序列化

    一.浅拷贝.深拷贝 浅拷贝会对对象中的成员变量进行拷贝:如果是基本类型,拷贝的就是基本类型的值:如果属性是内存地址(引用类型),拷贝的就是内存地址 : 深拷贝,除了基本类型外,引用类型所引用的对象也会 ...