[洛谷P1231] 教辅的组成

题目大意:有n1本书,n2本练习册和n3个答案,然后又一些条件,说明某本答案可能和某本书对应,某本练习册可能和某本书对应,求最多有多少本完整的书(有书,练习册,答案)

题解:网络流,对应就连边,然后考虑一本书可能有多条边相连导致答案变大,就把书拆成两个点,边权为1

卡点:1.前向星cnt初值为0,就有一条边无法遍历到,应该赋2

 

C++ Code:

#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
inline int min(int a,int b){return a<b?a:b;}
int n1,n2,n3,m1,m2;
int a,b,end,start=1;
int cnt=2,head[50010];
int d[50010];
struct Edge{int to,nxt,cost;
}e[150010];
int q[150010],h,t;
void add(int a,int b,int c){e[cnt]=(Edge){b,head[a],c};head[a]=cnt;e[cnt^1]=(Edge){a,head[b],0};head[b]=cnt^1;cnt+=2;
}
bool bfs(){memset(d,0,sizeof d);d[q[h=t=1]=start]=1;while (h<=t){int x=q[h++];
//		if (x==end)printf("%d\n",d[end]);if (x==end)return true;for (int i=head[x];i;i=e[i].nxt){int to=e[i].to;if ((!d[to])&&e[i].cost){d[to]=d[x]+1;q[++t]=to;}}}return d[end];
}
int dfs(int x,int low){if ((x==end))return low;int res=0,w;for (int i=head[x];i;i=e[i].nxt){int to=e[i].to;if ((d[to]==d[x]+1)&&e[i].cost){w=dfs(to,min(low-res,e[i].cost));
//			printf("%d\n",w);e[i].cost-=w;e[i^1].cost+=w;res+=w;if (res==low)return res;}}if (!res)d[x]=-1;return res;
}
void dinic(){int ans=0;while (bfs()){int k=dfs(start,inf);if (k>0)ans+=k;
//		printf("%d\n",ans);}printf("%d\n",ans);
}
int main(){scanf("%d%d%d",&n1,&n2,&n3);scanf("%d",&m1);for (int i=0;i<m1;i++){scanf("%d%d",&a,&b);add(b+1,n2+a+1,1);}scanf("%d",&m2);for (int i=0;i<m2;i++){scanf("%d%d",&a,&b);add(n1+n2+a+1,(n1<<1)+n2+b+1,1);}end=(n1<<1)+n2+n3+2;for (int i=1;i<=n2;i++)add(start,i+1,1);for (int i=1;i<=n3;i++)add((n1<<1)+n2+i+1,end,1);for (int i=1;i<=n1;i++)add(n2+i+1,n1+n2+i+1,1);dinic();return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9090069.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路

用两个栈实现一个队列的功能&#xff1f;要求给出算法和思路。 设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空&#xff1b; (2)如果不为空&#xff0c;则将栈B中最顶元素pop出&#xff1b;如果为空&#xff0c;则将A中所有元素POP出并…

可以用在任何人身上:百战百胜人生10大成功秘诀

这里介绍的10个成功秘诀&#xff0c;可以接受时代变迁的考验&#xff0c;可以用在任何人身上&#xff0c;更可以与时推移&#xff0c;永不落伍。尽管它们不是立杆见影的妙药&#xff0c;但只要你身体力行&#xff0c;定能改善你的生活方式。  1.必须先在内心深处感受到爱&…

扒一扒中断为什么不能调printf

[导读] 大家好&#xff0c;我是逸珺。前面说会写一下Modbus-RTU的实现&#xff0c;写了1000多字了&#xff0c;有兴趣的稍等一下哈。前面在一个群里看到一个朋友在一个串口接收中断里打印遇到了问题&#xff0c;今天聊下这个话题。扒一扒printf 对于单片机中printf到底向哪里打…

P4555 最长双回文串

题目描述 顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串&#xff0c;而abc不是&#xff08;abc的顺序为abc&#xff0c;逆序为cba&#xff0c;不相同&#xff09;。 输入长度为 n的串 S &#xff0c;求 S的最长双回文子串 T ,即可将 T 分为两部分 X&#xff0c; …

每日一题(34)—— 线程

1&#xff0e;线程的概念&#xff1a; 2 与进程的区别: 3 线程与进程的区别和联系? 线程是否具有相同的堆栈? 1、线程是指进程内的一个执行单元,也是进程内的可调度实体. 2、与进程的区别: (1)调度&#xff1a;线程作为调度和分配的基本单位&#xff0c;进程作为拥有资源…

如何利用MySQL加密函数保护Web网站敏感数据

如果您正在运行使用MySQL的Web应用程序&#xff0c;那么它把密码或者其他敏感信息保存在应用程序里的机会就很大。保护这些数据免受***或者窥探者的获取是一个令人关注的重要问题&#xff0c;因为您既不能让未经授权的人员使用或者破坏应用程序&#xff0c;同时还要保证您的竞争…

躺平,躺下就能赢吗?

之前在群里讨论这个话题&#xff0c;说躺平挺好的&#xff0c;没那么大压力&#xff0c;我也觉得躺平是好事&#xff0c;每个人都要追求理想的权力&#xff0c;那么反过来&#xff0c;每个人也有不追求理想的权力。躺平如果说的好听一些&#xff0c;也可以认为是躺赢&#xff0…

第一站---大连---看海之旅

5月下旬至7月上旬 是大连最舒服的季节 还不是很热 微风拂面 神清气爽的感觉 工具/原料 坐公交的零钱防晒霜可以下水的鞋推荐一下旅游路线吧个人意见:来大连必去的几个景点分为两类:免费的: 1.星海湾景区。在星海湾景区你可以来到星海广场、星海湾浴场、星海公园&#xff0c;这…

感觉stm32太简单是一种自负吗?

其实简单或者复杂都不重要&#xff0c;重要的是通过STM32我们能学习到什么&#xff1f;做一个键盘/鼠标&#xff0c;可以学习USB协议。做一个联网设备&#xff0c;需要学习以太网&#xff0c;TCP/IP协议的底层实现。做一个无线设备&#xff0c;可能需要学习蓝牙、WIFI或者zigbe…

回车 触发 提交事件

//gridview 文本框 回车 触发 Button 事件 < script type "text/javascript" language "javascript" > function clickButton() { if ( event.keyCode 13 ) { document.all ( ibtnUpdate ).click(); return false; } } < / script > < a…

每日一题(35)—— heap与stack的差别

heap与stack的差别: Heap是堆&#xff0c;stack是栈。 Stack的空间由操作系统自动分配/释放&#xff0c;Heap上的空间手动分配/释放。 Stack空间有限&#xff0c;Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C中对应的是new操作符。 程序在编译期对变量…

Scrapy学习-25-Scrapyd部署spider

Scrapyd部署爬虫项目 github项目https://github.com/scrapy/scrapyd 官方文档http://scrapyd.readthedocs.org/ 安装scrapydhttp://scrapyd.readthedocs.io/en/stable/install.html 运行# 在虚拟环境中使用scrapd命令# scrapyd是一个服务器监听在本地的6800端口scrapyd 安装scr…

耗时两年,19岁小伙采用230片纯74逻辑芯片搭建出32位处理器!可玩贪吃蛇

从设计 CPU、制作原型机、最终成品到软件编程&#xff0c;19 岁极客小伙用了整整两年的时间。RISC-V 是一个基于精简指令集&#xff08;RISC&#xff09;原则的开源指令集架构&#xff08;ISA&#xff09;&#xff0c;它是对应开源软件运动的一种「开源硬件」。该项目于 2010 年…

VC++ 6.0 与VS2008 C++ DEBUG工具(Windows)介绍

在VC 6.0 里面&#xff0c;debug工具有这些&#xff1a; 请看大图展示&#xff1a; 这里面几个工具都是经常用到的。比如&#xff1a;上下文信息&#xff0c;可以查看当前变量的值和地址Memory&#xff1a; 可以输入地址查看里面的内容。对调试和检查指针特别有用。 在vs2008里…

每日一题(36)—— 什么是预编译 , 何时需要预编译?

什么是预编译 , 何时需要预编译&#xff1f; &#xff11;、总是使用不经常改动的大型代码体。 &#xff12;、程序由多个模块组成&#xff0c;所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下&#xff0c;可以将所有包含文件预编译为一个预编译头。

数组与指针不能混用的情况

扫描二维码获取更多精彩嵌入式杂牌军编辑|追梦星空公众号|嵌入式杂牌军✎ 编 者 悟 语正当性的出发点应该是少目的性、不带偏见、以尊重为前提的多方考虑。文 章 导 读C中的数组有能混用的情况&#xff0c;有不能混用的情况&#xff0c;今天就带小伙伴们探究一下&#xff01;阅…

解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题

通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面。 而webRoot的/WEB-INF下的页面是受保护的&#xff0c;用户无法通过形如http://localhost:8080/test/webRoot/WEB-INF/content/xx.jsp来访问&#xff0c;他们的访问都必须透过struts处理请求才能达到。 然而&a…

[CTO札记]盛大游戏上市,是对《文化产业振兴规划》的响应

重要国策《文化产业振兴规划》于9月26日正式对外公布。巧合的是&#xff0c;就在前一天&#xff08;9月25日 &#xff09;&#xff0c;盛大游戏&#xff08;SDG&#xff09;成功在NASDAQ上市&#xff0c;并且创下了美股IPO规模之最&#xff08;10亿美元&#xff09;。1&#xf…

Linux内核入门之路 (非广告)

笔者从开始接触 Linux 内核应该有 4 ~ 5 年了&#xff0c;虽然不敢说非常了解 Linux 内核&#xff0c;但起码也有了点眉目。所以&#xff0c;本文主要想分享一下我的 Linux 内核入门之路&#xff0c;如果对大家有帮助的话&#xff0c;希望能够转发一下&#xff0c;帮助更多想学…

BZOJ3251: 树上三角形

BZOJ3251: 树上三角形 Description 给定一大小为n的有点权树&#xff0c;每次询问一对点(u,v)&#xff0c;问是否能在u到v的简单路径上取三个点权&#xff0c;以这三个权值为边长构成一个三角形。同时还支持单点修改。Input 第一行两个整数n、q表示树的点数和操作数第二行n个整…