很久以前,看到家乡洪水肆虐,大禹决心要把洪水引到大海里,因此带领众人修建立了一套水沟系统。他们在每条水沟都装了阀门来控制水的流量。他们设计了每条水沟每分钟的排水量,以及水沟的整体布局。洪水从池塘流出,最后汇入大海。请确定洪水从家乡流入大海的最大流量。输入格式: 第一行包含两个整数N和M,分别表示水沟数量和水沟的交叉点数量,其中交叉点1代表家乡,交叉点M是大海。后面N行,每行三个整数,s,e,c,其中s,e表示交叉点且水从s流向e,最大流量是c(0到10000之间)。输出格式: 输出排出水的最大流量。输入样例: 在这里给出一组输入。例如: 5 4 1 2 40 1 4 20 2 4 20 2 3 30 输出样例: 在这里给出相应的输出。例如: 40

时间: 2024-04-02 17:34:38 浏览: 12
以下是Python代码实现,使用网络流模板库来实现Edmonds-Karp算法,时间复杂度为O(V*E^2),其中V为节点数,E为边数: ``` from collections import deque from typing import List, Tuple from collections import defaultdict class Edge: def __init__(self, to, cap, rev): self.to = to self.cap = cap self.rev = rev class MaxFlow: def __init__(self, n: int): self.n = n self.edges = defaultdict(list) self.level = [0] * n self.iter = [0] * n def add_edge(self, frm: int, to: int, cap: int): self.edges[frm].append(Edge(to, cap, len(self.edges[to]))) self.edges[to].append(Edge(frm, 0, len(self.edges[frm]) - 1)) def bfs(self, s: int): self.level = [-1] * self.n q = deque() self.level[s] = 0 q.append(s) while q: v = q.popleft() for e in self.edges[v]: if e.cap > 0 and self.level[e.to] < 0: self.level[e.to] = self.level[v] + 1 q.append(e.to) def dfs(self, v: int, t: int, f: int): if v == t: return f for i in range(self.iter[v], len(self.edges[v])): e = self.edges[v][i] if e.cap > 0 and self.level[v] < self.level[e.to]: d = self.dfs(e.to, t, min(f, e.cap)) if d > 0: e.cap -= d self.edges[e.to][e.rev].cap += d return d self.iter[v] += 1 return 0 def max_flow(self, s: int, t: int) -> int: flow = 0 while True: self.bfs(s) if self.level[t] < 0: break self.iter = [0] * self.n while True: f = self.dfs(s, t, float('inf')) if f == 0: break flow += f return flow def solve(n: int, m: int, edges: List[Tuple[int, int, int]]) -> int: s = 0 t = m - 1 g = MaxFlow(m) for u, v, w in edges: g.add_edge(u - 1, v - 1, w) g.add_edge(v - 1, u - 1, 0) return g.max_flow(s, t) if __name__ == '__main__': n, m = map(int, input().split()) edges = [] for i in range(n): u, v, w = map(int, input().split()) edges.append((u, v, w)) print(solve(n, m, edges)) ``` 输入样例: ``` 5 4 1 2 40 1 4 20 2 4 20 2 3 30 ``` 输出样例: ``` 40 ```

相关推荐

最新推荐

recommend-type

抚河流域洪水预警预报 与水库联合调度系统的研制和应用

摘 要:根据流域洪水预报与调度地一体化理念,实现雨、水情信息采集与传输、河道与水库洪水预警预报、联合调度、洪水淹没可视化与灾情评估的一体化集成。本系统经两年应用,为防汛决策、指挥调度提供及时可靠的决策...
recommend-type

skyline洪水淹没分析代码

基于skyline二次开发的洪水淹没分析程序,采用C#语言编写,功能极其强大
recommend-type

mdk3洪水攻击教程图解。

mdk3洪水攻击:此攻击是针对无线AP的洪水攻击,又叫做身份验证攻击。其原理就是向AP发动大量的虚假的链接请求,这种请求数量一旦超 过了无线AP所能承受的范围,AP就会自动断开现有链接,使合法用户无法使用无线网络。...
recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。