【网络流24题】【洛谷P2764】最小路径覆盖问题【网络流】

innovus: 如何让两个generate clock balance skew group? 如题,在sdc约束中两个generate clock被设置到同一个clock group中,工具虽然会生成对应的两个skew group,但是阅读ccoot_spec发现工具并没有让两个skew group进行balance,这时就需要手动设置balance skew group。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 阅读详情

题目大意:

题目链接:https://www.luogu.org/problemnew/show/P2764

给定有向图 G = ( V , E ) G=(V,E) G=(V,E)。设 P P P是 G G G的一个简单路(顶点不相交)的集合。如果 V V V中每个定点恰好在 P P P的一条路上,则称 P P P是 G G G的一个路径覆盖。 P P P中路径可以从 V V V的任何一个定点开始,长度也是任意的,特别地,可以为 0 0 0。 G G G的最小路径覆盖是 G G G所含路径条数最少的路径覆盖.设计一个有效算法求一个 GAP \text{GAP} GAP(有向无环图) G G G的最小路径覆盖。


思路:

由于题目中要求任意一个点都必须正好走一次,所以这肯定是要拆点的,把每个点拆成 x 1 , x 2 x_1,x_2 x1​,x2​。
对于 G A P GAP GAP中每一条边 ( u , v ) (u,v) (u,v),我们建边 ( u 2 , v ) (u_2,v) (u2​,v),流量为1。这样就限制了每一条边只能走一次。
然后将源点连向 x 2 ( x ∈ [ 1 , n ] ) x_2(x\in [1,n]) x2​(x∈[1,n]), x 1 ( x ∈ [ 1 , n ] ) x_1(x\in [1,n]) x1​(x∈[1,n])连向汇点,跑最大流,就得到了最多可以合并几条道路。因为流一次就相当于合并了一条道路。
那么最小路径覆盖就是 n − n- n−最大流 了。
输出方案的话可以利用残余流量,递归输出方案。


代码:

#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int N=100010,Inf=1e9;
int n,m,S,T,tot=1,maxflow,head[N],dep[N],cur[N];
bool vis[N];

struct edge
{
    int from,to,flow,next;
}e[N];

void add(int from,int to,int flow)
{
    e[++tot].to=to;
    e[tot].flow=flow;
    e[tot].next=head[from];
    head[from]=tot;
}

bool bfs()
{
    memcpy(cur,head,sizeof(cur));
    memset(dep,0x3f3f3f3f,sizeof(dep));
    queue<int> q;
    q.push(S);
    dep[S]=1;
    while (q.size())
    {
        int u=q.front(),v;
        q.pop();
        for (int i=head[u];~i;i=e[i].next)
        {
            v=e[i].to;
            if (dep[v]>dep[u]+1&&e[i].flow)
            {
                dep[v]=dep[u]+1;
                q.push(v);
            }
        }
    }
    return dep[T]<Inf;
}

int dfs(int x,int flow)
{
    int low=0;
    if (x==T)
    {
        maxflow+=flow;
        return flow;
    }
    int used=0;
    for (int i=cur[x];~i;i=e[i].next)
    {
        int y=e[i].to;
        cur[x]=i;
        if (dep[y]==dep[x]+1&&e[i].flow)
        {
            low=dfs(y,min(e[i].flow,flow-used));
            if (low)
            {
                used+=low;
                e[i].flow-=low;
                e[i^1].flow+=low;
                if (used==flow) break;
            }
        }
    }
    return used;
}

void dinic()
{
    while (bfs())
        dfs(S,Inf);
}

void find(int x)
{
    vis[x-n]=1;
    printf("%d ",x-n);
    for (int i=head[x];~i;i=e[i].next)
    {
        int y=e[i].to;
        if (!e[i].flow && y!=x-n && !vis[y])
        {
            find(y+n);
            return;
        }
    }
}

int main()
{
    memset(head,-1,sizeof(head));
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        add(x+n,y,1);
        add(y,x+n,0);
    }
    S=N-1; T=N-2;
    for (int i=1;i<=n;i++)
    {
        add(S,i+n,1);
        add(i+n,S,0);
        add(i,T,1);
        add(T,i,0);
    }
    dinic();
    vis[S]=vis[T]=1;
    for (int i=1;i<=n;i++)
        if (!vis[i])
        {
            find(i+n);
            putchar(10);
        }
    printf("%d\n",n-maxflow);
    return 0;
}
【matlab】基于 Simulink 的空调恒温控制系统仿真建模 本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。 阅读详情

相关推荐

STM32F030C8烧录实战:用J-Link Commander实现一键批量烧写(附完整脚本)

本文详细介绍了如何使用J-Link Commander工具链实现STM32F030C8的一键批量烧录,包括环境配置、批处理脚本设计、命令脚本解析以及生产环境实战技巧。通过自动化烧录流程,显著提升效率并降低人为错误,特别适合量产和频繁迭代的开发场景。

weixin_30505225的博客 459

最小路径覆盖

花了好长时间,用于找了几篇能看懂的最小路径覆盖。 定义:通俗点将,就是在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖。 最小不相交路径覆盖:每一条路径经过的顶点各不相同。如图,其最小路径覆盖数为3。即1->3>4,2,5。 最小可相交路径覆盖:每一条路径经过的顶点可以相同。如果其最小路径覆盖数为2。...

Bowen的博客 1万+

基于高精度三维机器视觉的新能源汽车锂电池表面缺陷检测

在机器视觉行业迅速发展的背景下,市场上提供了功能强大且种类齐全的3D相机系列,可以满足锂电池从电芯到模组各个工艺和工位的3D检测需求。

Hinyeung_Limited的博客 1131

洛谷 P2764——最小路径覆盖问题【二分图最大匹配 & 最大流 & 并查集记录路径】

题目传送门 题目描述 给定有向图 G=(V,E)G=(V,E)G=(V,E) 。设 PPP 是 GGG 的一个简单路(顶点不相交)的集合。如果 VVV 中每个定点恰好在 PPP 的一条路上,则称 PPP 是 GGG 的一个路径覆盖。PPP 中路径可以从 VVV 的任何一个定点开始,长度也是任意的,特别地,可以为 000 。GGG 的最小路径覆盖是 GGG 所含路径条数最少的路径覆盖。设计一个有效...

NIRVANA REBIRTH 403

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 190

SAP Gateway Foundation OData V4 服务管理深度解析,从 Service Repository 到 Service Group 的完整运行逻辑

本文解析了SAP S/4HANA中OData V4 API的技术架构,重点阐述Service Repository、Service与Service Group的三层管理体系。以SalesOrder和PurchaseOrder API为例,说明不同服务可能属于特定repository(如srvd_a2x)而非默认DEFAULT库。Service Group作为业务模型组合单元,支持跨服务引用和统一配置,其发布状态直接影响服务可用性。文中对比了后台管理事务/IWBEP/V4_ADMIN与网关端/IWFND/V4

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 82

最小路径覆盖(最小路径覆盖)

最小路径覆盖 Description 定义: 一个不含圈的有向图G中,G的一个路径覆盖是一个其结点不相交的路径集合P,图中的每一个结点仅包含于P中的某一条路径。路径可以从任意结点开始和结束,且长度也为任意值,包括0。请你求任意一个不含圈的有向图G的最小路径覆盖数。 提示:最小路径覆盖数=G的定点数-最小路径覆盖中的边数 最小路径覆盖数=原图G的顶点数-二分图的最大匹配数 Input t 表示有t组数据;n 表示n个顶点(n<=120);m 表示有m条边;    接下来m行,每行有两个数 i,j表示一条

我很菜的好吧 2322

一文吃透:从零到一开发一套 ABAP RAP 应用的完整路径

ABAP RAP开发实战摘要 本文系统介绍了ABAP RESTful Application Programming Model (RAP)在企业级应用开发中的实施路径。文章以出差申请业务场景为例,详细拆解了RAP开发的六步主线流程: 数据库表设计:规范主键、审计字段设计 CDS数据建模:通过视图定义业务对象实体及关联 行为定义与实现:使用BDEF声明事务规则,Behavior Pool类实现业务逻辑 业务对象投影:裁剪服务接口视图 服务定义与绑定:按OData协议暴露服务 UI集成测试:支持Fiori E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 507

最小路径覆盖详解

定义:通俗点讲,就是在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。 而最小路径覆盖又分为:最小不相交路径覆盖 和 最小可相交路径覆盖。 最小不相交路径覆盖 : 就是我们找到的每条路径不能相交,就是每条路径不能有同一个点。 最小可相交路径覆盖 : 这个与上面相对应,就是可以相交。 注意:每个点被自己覆盖,路径长度为0 求解最小不相交路径覆盖: 我们把每个点都拆成两个点,分为入点和出点...

青烟绕指柔的博客 3152

【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件

本文介绍了如何将C#游戏开发中的代码从单个.cs文件拆分到多个.cs文件中,以提升代码的可维护性和可读性。文章演示了在Visual Studio中创建Hero类和ShowInfo类的具体步骤:通过右键项目名添加新建类,将原有代码分别剪切到对应的类文件中,并自动生成命名空间。拆分后需要在Program.cs中通过"using"指令引用这些类,最后通过运行测试验证功能正常。这种模块化代码组织方式能有效解决单一文件代码过长、结构混乱的问题。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1135

【MATLAB-app】csdn上第一套关于matlab appdesigner界面设计 系列“视频课”来啦~~

写作时间: 2020-12-10 标题: 01_为什么推荐你学习appdesigner? 目录: 1.什么是appdesigner? 2.appdesigner能干什么,有什么好处? 3.怎么学习?保证你一周内能够学会! 4.我的课程总目录 5.重磅来袭(如何获取学习资料代码+文档+视频) 正文: 1.什么是appdesigner? 2.appdesigner能干什么,有什么好处? 3.怎么学习?保证你一周内能够学会! 4.我的课程总目录 5.重磅来袭(如何获取学习资料代码+文档+视频) THE END

wind 2万+

【网络流24题-3】洛谷P2764 最小路径覆盖问题

DAG的最小不相交路径覆盖

a free man 305

PDF格式分析(一)简介

概述 PDF文件是一种编程形式的文档格式,它所有显示的内容,都是通过相应的操作符进行绘制的。 PDF基本显示单元包括:文字,图片,矢量图,图片 PDF扩展单元包括:水印,电子署名,注释,表单,多媒体,3D PDF动作单元:书签,超链接(初学者可以简单这么理解,对于研究比较深入的人员来说,拥有动作的单元有很多个,包括电子署名,多媒体,3D等等) 优势 一致性: 在所有可以打开PDF的机...

steve_cui的博客 2万+

网络流24题3最小路径覆盖问题(洛谷 P2764 最小路径覆盖问题)

题目描述«问题描述:给定有向图G=(V,E)。设P 是G 的一个简单路(顶点不相交)的集合。如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖。P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0。G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖。设计一个有效算法求一个有向无环图G 的最小路径覆盖。提示:设V={1,2,…. ,n},构造网络G1=(V1,E1

Sunny_ZRY的博客 1025

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[网络流24题(1/24)] 最小路径覆盖问题(洛谷P2764)

传送门 分析: 本题的结论是:最小路径覆盖=顶点数-原图的最大匹配数 证明(逼逼) : 对于111对由111条边覆盖的点而言,点数−1=边数点数-1=边数点数−1=边数 倘若对于nnn个由mmm边所覆盖的点而言,则等价于把上述式子归纳,则有:n−m=covern-m=covern−m=cover 而现在我们需要令covercovercover最大化,显然我们必定是要取到尽可能多的符合题意的边数。 ...

Chen.Jr的博客 269

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

洛谷 P2764 最小路径覆盖问题 (网络流24题)

题目:最小路径覆盖问题 思路: 把每个点拆成两个点,其中一个作为入点,另一个作为出点。 然后对于这个二分图求最大匹配输出。 之前因为int没加返回值,系统开了O2优化RE了好久QAQ…… 代码: #pragma GCC optimize(2) #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define maxn 150 #define m...

iwi 328

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

洛谷P2764 最小路径覆盖问题(最小割) 网络流24题(2)

洛谷P2764 最小路径覆盖问题(最小割) 链接 题意:给一张有向无环图,要用最少的路径覆盖所有的边,输出多少条路径并且输出具体路径 思路:我们可以根据最小割最大流定理理解成,割掉最小流量,让整个图不连通吗,所以就变成了一个几乎是模板题的最小割,其中记录一下路径即可,我们在每次更新流量的时候记录一下。 #include<bits/stdc++.h> using namespace std; #define int long long const int N = 1500, INF = 21474

qq_51672768的博客 232

网络流24题 3最小路径覆盖问题(洛谷 P2764)

题目描述 «问题描述: 给定有向图G=(V,E)。设P 是G 的一个简单路(顶点不相交)的集合。如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖。P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0。G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖。设计一个有效算法求一个有向无环图G 的最小路径覆盖。提示:设V={1,2,.... ,n},构造网络G1...

人生如戏 402

2018.10.20【网络流24题】【洛谷P2764】【LOJ6002】最小路径覆盖问题(二分图最大匹配)...

洛谷传送门 LOJ传送门 解析: 每个点拆一下从出点和入点做二分图匹配,同时记录一下二分图匹配到的另一部分的节点,然后跳一下就行了 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define re register #define...

anlongyi8087的博客 132

2018.10.20【网络流24题】【洛谷P2764】【LOJ6002】最小路径覆盖问题(二分图最大匹配)

传送门 解析: 每个点拆一下从出点和入点做二分图匹配,同时记录一下二分图匹配到的另一部分的节点,然后跳一下就行了 代码: #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; #define ll long long #define re register #define gc getchar #define pc putchar #define...

zxyoi_dreamer的博客(不定期诈尸) 218

【网络流24题】最小路径覆盖模型

理论与证明看这里:https://blog.youkuaiyun.com/qq_39627843/article/details/82012572 总结一下就是,最小路径覆盖有两种模型,一种是DAG上顶点不可相交的路径覆盖,一种是DAG上顶点可相交的路径覆盖,第二种是可以转化为第一种的,只需要用floyd传递闭包就可以了,这样两者都可以转化为二分图最大匹配的模型,算法就是,将DAG上的点U拆成Ux与Uy,如...

Q755100802的博客 464

【网络流】——P2764 最小路径覆盖问题

一个最小路径覆盖的模板题。 Go:洛谷 最小路径覆盖=顶点数-二分图最大匹配 因此我们将点复制一份,按照题目给的数据在两端连边,长度为1。 建立一个super源&汇,源向左边的点连边,右边的点向汇连边,长度为1。 求解路径: 我们在邻接表中存下每条边的起始点,对于一条流为0的边,表示它是最小路径中的一条,那么用冰茶姬将他们连起来,最后访问单独集合中的路径即可。 ...

weixin_30410119的博客 271

洛谷2764 最小路径覆盖问题

问题描述: 给定有向图G=(V,E)。设P 是G 的一个简单路(顶点不相交)的集合。如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖。P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0。G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖。设计一个有效算法求一个有向无环图G 的最小路径覆盖。 编程任务: 对于给定的给定有向无环图G,编程找出G...

dizou7578的博客 157

【网络流24题】 最小路径覆盖问题

题面 https://www.luogu.org/problem/P2764 题解 原谅当年的我太弱,把$dinic$拼错。 upd:我发现我当年判边在不在最大流上也是假的。应该看$w[i]是否为0$。 upd:应该是有必要补说一下的,一开始,每个点自成一个路径,然后一个合法的匹配就是把两条路径合二为一,路径数$-1$,所以边可以是有向的。并且不能自己和自己连边。 最后的路径...

weixin_30362233的博客 68

洛谷网络流24题

一、P2756 飞行员配对方案问题 二、 P2762 太空飞行计划问题 三、P2764 最小路径覆盖问题 四、P2765魔术球问题 五、P3254圆桌问题 六、P2766最长不下降子序列问题 七、P2763试题库问题 八、P2774方格取数问题 九、P1251餐巾计划问题 十、P2770航空路线问题 十一、P4011孤岛营救问题(emmm,没用到网络流,也...

PCCCCC的博客 997
上一篇: 【JZOJ4804】成绩调研【模拟】【双指针】
下一篇: 【洛谷P1430】序列取数【dp】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值