zoukankan      html  css  js  c++  java
  • 网络流模板

    哎,其实很久前就学过网络流了,但是一直嫌比较恶心就没有把他拿起认真学过。

    现在重新补上。

    因为我们熊本熊(网络流dalao)说这种算法一般出出来都不会故意卡数据什么的,那我就用标号法(层次图优化版)。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define ll long long
    #define il inline
    #define db double
    using namespace std;
    int cap[445][445];//该数组用来记录残量和 
    int dist[445];//保存层次图的深度 
    il bool bfs(int src,int des)
    {
        memset(dist,-1,sizeof(dist));//初始化 
        dist[src]=0;
        int t[445];
        int head=0,tail=1;
        while(head!=tail)//广搜求层次图深度 
        {
            int h=t[head++];
            for(int i=1;i<=n;i++)
            {
                if(cap[h][i]&&dist[i]==-1)
                {
                    dist[i]=dist[h]+1;
                    t[tail++]=i;
                }
            }
        }
        if(dist[des]==-1)//到不了终点 
        return 0;
        else
        return 1;
    }
    il int maxflow(int src,int des)
    {
        int sum=0;
        while(bfs(src,des))
        {
            int low[445],pre[445];//low表示从i点最多能流出多少,pre记录前驱节点 
            low[src]=2e8;
            bool vis[445]={0};//标号 
            vis[src]=1;
            while(head!=tail)
            {
                int h=t[head++];
                for(int i=1;i<=n;i++)
                {
                    if(vis[i]||cap[h][i]<=0||dist[i]!=dist[h]+1)
                    break;
                    vis[i]=1;
                    low[i]=min(low[h],cap[h][i]);
                    pre[i]=h;
                    t[tail++]=i;
                }
            }
            if(!low[des])
            break;
            sum+=low[des];
            for(int i=des;i!=src;i=pre[i])//修改增广路上的流量 
            {
                cap[pre[i]][i]-=low[des];
                cap[i][pre[i]]+=low[des];
            }
        }
    }
    int main()
    {
        
        return 0;
    }
    PEACE
  • 相关阅读:
    textarea组件
    switch组件
    slider组件
    radio组件
    picker-view组件
    picker组件 label组件讲解
    weui 框架
    微信小程序 input 组件
    在php中获取 数据库的内容,返回到页面
    微信小程序 form 组件
  • 原文地址:https://www.cnblogs.com/gshdyjz/p/7397126.html
Copyright © 2011-2022 走看看