题目大意:
从有向无环图中选出若干点不想交的链,使得这些链覆盖所有的点,并且链的条数最小。

思路:
设超级源点$S$、超级汇点$T$。
将$N$个点复制一份,分为$A$部和$B$部。
对于$A$部的所有点$A_i$,连一条从$S$到$A_i$的边;
对于$B$部的所有点$B_i$,连一条从$B_i$到$T$的边。
用最大流跑一边二分图匹配,得到的最大流F为每条链上入度为0的点的个数总和,而B部中未被匹配的点对应着每个链的头。
答案即为N-F。

 #include<queue>
#include<cstdio>
#include<cctype>
#include<vector>
#include<cstring>
inline int getint() {
char ch;
while(!isdigit(ch=getchar()));
int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
int s,t;
const int E=,V=;
struct Edge {
int from,to;
bool remain;
};
Edge e[E];
std::vector<int> g[V];
int sz=;
inline void add_edge(const int u,const int v,const bool w) {
e[sz]=(Edge){u,v,w};
g[u].push_back(sz);
sz++;
}
int p[V];
bool a[V];
inline bool Augment() {
memset(a,,sizeof a);
a[s]=true;
std::queue<int> q;
q.push(s);
while(!q.empty()&&!a[t]) {
int x=q.front();
q.pop();
for(unsigned i=;i<g[x].size();i++) {
Edge &y=e[g[x][i]];
if(!a[y.to]&&y.remain) {
p[y.to]=g[x][i];
a[y.to]=a[x]&&y.remain;
q.push(y.to);
}
}
}
return a[t];
}
inline int EdmondsKarp() {
int maxflow=;
while(Augment()) {
for(int i=t;i!=s;i=e[p[i]].from) {
e[p[i]].remain^=true;
e[p[i]^].remain^=true;
}
maxflow++;
}
return maxflow;
}
int main() {
int n=getint(),m=getint();
s=,t=n<<|;
for(int i=;i<=n;i++) {
add_edge(s,i,true);
add_edge(i,s,false);
add_edge(n+i,t,true);
add_edge(t,n+i,false);
}
for(int i=;i<=m;i++) {
int u=getint(),v=getint();
add_edge(u,n+v,true);
add_edge(n+v,u,false);
}
printf("%d\n",n-EdmondsKarp());
return ;
}

[HihoCoder1394]网络流四·最小路径覆盖的更多相关文章

  1. hihocoder #1394 : 网络流四·最小路径覆盖(最小路径覆盖)

    #1394 : 网络流四·最小路径覆盖 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机 ...

  2. hiho 第118周 网络流四·最小路径覆盖

    描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游 ...

  3. hihoCoder 1394 : 网络流四·最小路径覆盖

    题目链接:https://hihocoder.com/problemset/problem/1394 题目说是网络流,但是其实就是求有向无环图的最小路径覆盖. 不会网络流,只好用二分匹配了. 把每个点 ...

  4. ●hihocoder #1394 网络流四·最小路径覆盖

    题链: http://hihocoder.com/problemset/problem/1394 题解: 有向图最小路径覆盖:最少的路径条数不重不漏的覆盖所有点. 注意到在任意一个最小路径覆盖的方案下 ...

  5. hihoCoder 网络流四·最小路径覆盖

    题面带解释 hihoCoder感觉很好. 网络流的精华就是建图 #include<cstdio> #include<iostream> #include<algorith ...

  6. 网络流二十四题之P2764 最小路径覆盖问题

    题目描述 给定有向图 G=(V,E)G=(V,E) .设 PP 是 GG 的一个简单路(顶点不相交)的集合.如果 VV 中每个定点恰好在PP的一条路上,则称 PP 是 GG 的一个路径覆盖.PP中路径 ...

  7. 【网络流24题】 No.3 最小路径覆盖问题 (网络流|匈牙利算法 ->最大二分匹配)

    [题意] 给定有向图 G=(V,E).设 P 是 G 的一个简单路(顶点不相交) 的集合.如果 V 中每个顶点恰好在 P 的一条路上,则称 P 是 G 的一个路径覆盖. P 中路径可以从 V 的任何一 ...

  8. LOJ6002 - 「网络流 24 题」最小路径覆盖

    原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio&g ...

  9. LibreOJ 6003. 「网络流 24 题」魔术球 贪心或者最小路径覆盖

    6003. 「网络流 24 题」魔术球 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据 ...

随机推荐

  1. HTMl学习笔记02-编辑器

    工欲善其事,必先利其器 使用专业HTML编辑器来编辑HTML,推荐使用Notepad++,中文界面. 在Notepad++安装完成后,点击文件>新建.语言>H中选择HTML 在新建的文件输 ...

  2. eclipse自动编译

    自动编译:对java应用没有什么意义,对web应用来说,当修改了代码时,会自动帮你编译并发布到web容器中去,省的重启web容器了. build:编译,Eclipse的编译是基于时间戳的判断机制的.c ...

  3. 在try-catch机制优化IO流关闭时,OutputStreamWriter 数据流被截断

    1.前言 try-catch常规的格式是try{……}catch(){……}finallly{……},如果优化成try(……){……}catch(){……}finallly{……},此时流就可以自动关 ...

  4. Oracle 服务器结构

    [学习目标] 作为一个数据库管理员(DBA),经常会遇到各种没有见过的问题.除了宝贵的经验外, 通过理论基础去对问题进行判断.解决是至关重要的.因此,Oracle 服务器的结构和组成 是学习Oracl ...

  5. SeaJS入门教程系列之使用SeaJS(二)

    SeaJS入门教程系列之使用SeaJS(二) 作者: 字体:[增加 减小] 类型:转载 时间:2014-03-03我要评论 这篇文章主要介绍了SeaJS入门教程系列之使用SeaJS,着重介绍了SeaJ ...

  6. 使用JSONP实现跨域通信

    引语 Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.由于受到浏览器的限制,该方法不允许 ...

  7. java 动态代理(类型信息)

    代理是基本的设计模式之一它为你提供额外的或不同的操作,而插入的用来代替"实际"对象的对象. package typeinfo; //: typeinfo/SimpleProxyDe ...

  8. hdu1024线性dp

    /* dp[i][j]表示取第i个数时分成了j块 要么是将第i个数加入j块中的最后一块,要么是自成一块,加上前面j-1块的和 状态转移方程: dp[i][j]=max(dp[i-1][j]+a[i], ...

  9. cf796c 树形,思维题

    一开始以为是个树形dp,特地去学了..结果是个思维题 /* 树结构,设最大点权值为Max,则答案必在在区间[Max,Max+2] 证明ans <= Max+2 任取一个点作为根节点,那么去掉这个 ...

  10. poj1179 环形+区间dp

    因为要用到模,所以左起点设置为0比较好 #include<iostream> #include<cstdio> #include<cstring> #define ...