题目传送门

思路:

  观察到路径上除了终点起点以外的每个点出度和入度都为1,和网络流的拆点很像,所以就把每个点都拆成两个点,若存在一条路径$(u,v)$,则建一条$(u,v+n,1)$的边,然后求出最大流后,每个起点的入度都是0,所以$ans=n-maxflow$。

  注意由于是拆点,所以各种数组都要开两倍空间。

#include<bits/stdc++.h>
#define clr(a,b) memset(a,b,sizeof(a))
using namespace std; typedef long long ll; const ll INFLL = 0x3f3f3f3f3f3f3f3f;
const int INF = 0x3f3f3f3f;
const int maxn = ; struct Edge {
int to, flow, nxt;
Edge(){}
Edge(int to, int nxt, int flow):to(to),nxt(nxt), flow(flow){}
}edge[maxn * maxn * ]; int head[maxn*], dep[maxn*];
int S, T;
int N, n, m, tot;
void init(int n)
{
N=n;
for (int i = ; i <= N; ++i) head[i] = -;
tot = ;
} void addv(int u, int v, int w, int rw = )
{
edge[tot] = Edge(v, head[u], w); head[u] = tot++;
edge[tot] = Edge(u, head[v], rw); head[v] = tot++;
} bool BFS()
{
for (int i = ; i <= N; ++i) dep[i] = -;
queue<int>q;
q.push(S);
dep[S] = ;
while (!q.empty())
{
int u = q.front();
q.pop();
for (int i = head[u]; ~i; i = edge[i].nxt)
{ if (edge[i].flow && dep[edge[i].to] == -)
{
dep[edge[i].to] = dep[u] + ;
q.push(edge[i].to);
}
}
}
return dep[T] < ? : ;
} int DFS(int u, int f)
{
if (u == T || f == ) return f;
int w, used = ;
for (int i = head[u]; ~i; i = edge[i].nxt)
{
if (edge[i].flow && dep[edge[i].to] == dep[u] + )
{
w = DFS(edge[i].to, min(f - used, edge[i].flow));
edge[i].flow -= w;
edge[i ^ ].flow += w;
used += w;
if (used == f) return f;
}
}
if (!used) dep[u] = -;
return used;
} int Dicnic()
{
int ans = ;
while (BFS())
{
ans += DFS(S, INF);
}
return ans;
} int main(){
cin>>n>>m;
T=*n+;
init(T);
S=;
while(m--){
int u,v;
scanf("%d%d",&u,&v);
addv(u,v+n,);
}
for(int i=;i<=n;i++){
addv(S,i,);
addv(i+n,T,);
}
int ans=n-Dicnic();
printf("%d\n",ans);
}

hiho# 1394最小路径覆盖 网络流拆点的更多相关文章

  1. 刷题总结——魔术球问题(ssoj最小路径覆盖+网络流)

    题目: 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2 ,3,… 的球.(1)每次只能在某根柱子的最上面放球.(2)在同一根柱子中,任何 2 个相邻球的编号之和为 ...

  2. 【Luogu】P2764最小路径覆盖(拆点求最大匹配)

    题目链接 这个……学了一条定理 最小路径覆盖=原图总点数-对应二分图最大匹配数 这个对应二分图……是什么呢? 就是这样 这是原图 这是拆点之后对应的二分图. 然后咱们的目标就是从这张图上跑出个最大流来 ...

  3. [Cogs728] [网络流24题#3] 最小路径覆盖 [网络流,最大流,二分图匹配]

    建图:源点—>边的起点(集合1中的)—>边的终点(集合2中的)—>汇点,所有边权均为1, 计算最大流,最后枚举起点的出边,边权为0的即为匹配上的, 可以这样理解:每条边表示起点和终点 ...

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

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

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

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

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

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

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

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

  8. Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流)

    Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流) Description 给定有向图G=(V,E).设P是G的一个简单路(顶点不相 ...

  9. 【洛谷】4304:[TJOI2013]攻击装置【最大点独立集】【二分图】2172: [国家集训队]部落战争【二分图/网络流】【最小路径覆盖】

    P4304 [TJOI2013]攻击装置 题目描述 给定一个01矩阵,其中你可以在0的位置放置攻击装置. 每一个攻击装置(x,y)都可以按照“日”字攻击其周围的8个位置(x-1,y-2),(x-2,y ...

随机推荐

  1. Spring MVC的handlermapping之请求分发如何找到正确的Handler(RequestMappingHandlerMapping)

    这个思路同样是通过在AbstractHandlerMethodMapping里面来实现getHandlerInternal()实现自己的方法来处理寻找正确的处理器,不懂得请看上一篇. protecte ...

  2. SOCKET句柄泄露带来的内存灾难

    前些时候游戏莫名其妙出现大量内存泄露,我感到很诧异,当然一般情况下游戏的内存管理是极其严苛的,出现如此大量的内存泄露到底是怎么回事? 句柄滥用导致的内存泄露会多夸张呢,尤其SOCKET,在某些客户端系 ...

  3. tomcat运行为什么要依靠jdk

    问题1:为什么要装jdk 因为tomcat是用java写的,所以运行需要JRE,就是JAVA运行时刻环境,所以必须通过安装JDK来得到这个运行环境,不装JDK装JRE也行,sun的网站上有下载.但是J ...

  4. 持续集成与devops

    持续集成 持续集成 持续集成(Continuous integration,简称CI),简单的说持续集成就是频紧地(一天多次)将代码集成到主干,它的好处主要有两个: 1.快速发现错误.每完成一次更新, ...

  5. TP5 通过shell建立PHP守护程序

    用 vim建立 /etc/init.d/keepalive文件 #!/bin/bash # chkconfig: 2345 10 90 # description: Start and Stop KE ...

  6. Class 'App\Http\Controllers\DB' not found and I also cannot use a new Model

    使用laravel的db插入数据 DB::table('tags')->insert( ['name'=>'test'] ); 报错Class 'App\Http\Controllers\ ...

  7. Github的注册经历

    姓名 韦军 学号 1413042023 班级 网络141 兴趣爱好 读书 上网 在注册Github时,先去网上下载了一个Github的app,打开一看全是英文,还是看懂了一些,点击开始注册,在注册时还 ...

  8. Solr相似度算法四:IBSimilarity

    Information based:它与Diveragence from randomness模型非常相似.与DFR相似度模型类似,据说该模型也适用于自然语言类的文本.

  9. ASP.NET 邮件发送

    ASP.NET 邮件发送用NET的MAIL类即可实现. 邮件发时,为不影响进程,所以采用多线程实现比较好. /// <summary> /// 多线程邮件发送 多线程需注意不要引用到外部方 ...

  10. Npoi--合并单元格

    一.缘由. 最近公司的一个需求,导出 Excel, 相同的数据进行合并,并且 还有 二级合并. 最终效果图如下: 哈哈哈哈哈,图表略微有些丑陋,请大家不要介意. 他的原始数据,是一条一条的, 如下图: ...