闫学灿acwing_用标号法求网络最大流

闫学灿acwing_用标号法求网络最大流给定一个包含 n 个点 m 条边的有向图,并给定每条边的容量,边的容量非负。图中可能存在重边和自环。求从点 S 到点 T 的最大流。输入格式第一行包含四个整数 n,m,S,T。接下来 m 行,每行三个整数 u,v,c,表示从点 u 到点 v 存在一条有向边,容量为 c。点的编号从 1 到 n。输出格式输出点 S 到点 T 的最大流。如果从点 S 无法到达点 T 则输出 0。数据范围2≤n≤1000,1≤m≤10000,0≤c≤10000,S≠T输入样例:7 14 1 71 2

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个包含 n 个点 m 条边的有向图,并给定每条边的容量,边的容量非负。

图中可能存在重边和自环。求从点 S 到点 T 的最大流。

输入格式
第一行包含四个整数 n,m,S,T。

接下来 m 行,每行三个整数 u,v,c,表示从点 u 到点 v 存在一条有向边,容量为 c。

点的编号从 1 到 n。

输出格式
输出点 S 到点 T 的最大流。

如果从点 S 无法到达点 T 则输出 0。

数据范围
2≤n≤1000,
1≤m≤10000,
0≤c≤10000,
S≠T

输入样例:
7 14 1 7
1 2 5
1 3 6
1 4 5
2 3 2
2 5 3
3 2 2
3 4 3
3 5 3
3 6 7
4 6 5
5 6 1
6 5 1
5 7 8
6 7 7
输出样例:
14
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
const int M = 2e4 + 10;
const int INF = 0x3f3f3f3f;
struct Edge{ 
   
    int v,next,w;
}edge[M];
int head[N],cnt;
int pre[N],d[N],q[N],st[N];
int tt = 0,hh = 0;
int n,m,s,e;
void add(int u,int v,int w){ 
   
    edge[cnt].v = v;
    edge[cnt].w = w;
    edge[cnt].next = head[u];
    head[u] = cnt ++;
}
bool bfs(){ 
   
    hh = tt = 0;
    memset(st,0,sizeof st);
    q[tt ++] = s,d[s] = INF,st[s] = true;
    pre[s] = -1;
    while(hh < tt){ 
   
        int t = q[hh ++];
        for(int i = head[t];~i;i = edge[i].next){ 
   
            int v = edge[i].v,w = edge[i].w;
            if(!st[v] && w > 0){ 
   
                st[v] = true;
                d[v] = min(d[t],w);
                pre[v] = i;
                if(v == e)return true;
                q[tt ++] = v;
            }
        }
    }
    return false;
}
int EK(){ 
   
    int maxflow = 0;
    while(bfs()){ 
   
        maxflow += d[e];
        for(int t = e;t != s;t = edge[pre[t] ^ 1].v){ 
   
            edge[pre[t]].w -= d[e];
            edge[pre[t] ^ 1].w += d[e];
        }
    }
    return maxflow;
}
int main(){ 
   
    int x,y,w;
    memset(head,-1,sizeof head);
    cin>>n>>m>>s>>e;
    for(int i = 0;i < m;i ++){ 
   
        cin>>x>>y>>w;
        add(x,y,w);
        add(y,x,0);
    }
    // bfs();
    cout<<EK()<<endl;
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169094.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月10日 下午9:16
下一篇 2022年8月10日 下午9:36


相关推荐

  • python电脑攻击_python实现MAC洪水攻击

    python电脑攻击_python实现MAC洪水攻击前言 一般交换机在数据转发过程中 依靠对 CAM 表的查询来确定正确的转发接口 如果在 CAM 表中查询不到 则将该数据帧作为广播帧处理 CAM 表存储数量有限 当数据到达上限之后将不会存储 根据此原理 可以通过在刷新时间内对其发送足够多的不同 MAC 地址的伪造数据包来占用 CAM 表 这种情况下 所有经过交换机的数据帧都会被作为广播帧处理 然后就可以获取到所有经过交换机的正常数据帧 并且交换机模式会降为 Hub 模

    2026年3月18日
    2
  • js打开新窗口Window.open()方法

    js打开新窗口Window.open()方法目录 Window open 方法一 关闭当前页面 打开新的页面 1 方法一 利用超链接 2 方法二 利用 js 来跳转页面 在同当前窗口中打开窗口 二 保留当前页面 打开一个新的 tab 页面 1 方法一 利用超链接 2 方法二 利用 js 打开新页面 在另外新建窗口中打开窗口 三 保留当前页面 打开一个非 tab 页面完整的代码 window open page html newwindow height 100 width 400 top 0 left 0 toolbar no menub

    2026年3月18日
    2
  • C++类中静态变量和静态方法使用介绍

    C++类中静态变量和静态方法使用介绍刷剑指offer第64题涉及到类内静态成员与方法的知识,有点模糊,找了两篇博客整理一下。转自:https://www.cnblogs.com/sixue/p/3997324.html    最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下。静态成员的概…

    2022年5月27日
    36
  • VBoxManage命令详解技术文章[通俗易懂]

    VBoxManage命令详解技术文章[通俗易懂]薸泊`お甡VBoxManage命令详解技术文章VBoxManage[-v|-version]        显示virtualbox的版本号VBoxManage-nologo              隐藏logoVBoxManage-convertSettings     允许自动转换设置文件VBoxManage-convertSettingsBackup 允许自动转换设置文件,…

    2022年6月14日
    29
  • Qt中自定义QTreeWidget实现节点拖拽复制功能[通俗易懂]

    Qt中自定义QTreeWidget实现节点拖拽复制功能[通俗易懂]QT中在QWidget支持拖拽功能,QTreeWidget继承自QWidget,所以自然也具有节点的拖拽功能。拖拽包含两个功能:一个是拖动(Drag),一个是放下(Drop)。拖动的数据是QMimeData数据,MIME数据定义格式:类型/数据(注意中间有斜线)。若被拖动的对象放下的控件,不接受拖动的对象,Qt光标显示禁用的形状(一个禁用形状)。开始拖动:通过调用QDrag::exec()…

    2022年9月30日
    6
  • linux 中文 文件名乱码,中文文件名乱码问题

    linux 中文 文件名乱码,中文文件名乱码问题出自 LinuxWiki 提示 此文已超过 5 年 1880 天 未更新 如发现内容过时或有误 欢迎改进 注意 本文解决的是文件名或文件夹名的编码问题 要查看转换文件内容的选项 请参考 iconv 工具 更多与乱码有关的问题 请参阅中文编码与乱码问题分类 中文文件名乱码产生的原因有二 一是挂载 NTFS 或 FAT 文件系统时 编码指定不正确导致乱码 或问号 二是在文件系统中文件名存储的编码不正确 导致乱码

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号