zoukankan      html  css  js  c++  java
  • 最小费用最大流MCMF 最小增广

    没有写单纯性的。。。应该不会有卡最小增广的出题人吧。。。(雾)

     1 struct MCMF{
     2     struct tedge{int x,y,cap,flow,w,next;}adj[maxm];int ms,fch[maxn];
     3     int n,m,d[maxn],p[maxn],a[maxn];bool inq[maxn];
     4     void init(int n){
     5         this->n=n;ms=0;
     6         memset(fch,-1,sizeof(fch));
     7         return;
     8     }
     9     void addedge(int u,int v,int z,int w){
    10         adj[ms]=(tedge){u,v,z,0,w,fch[u]};fch[u]=ms++;
    11         adj[ms]=(tedge){v,u,0,0,-w,fch[v]};fch[v]=ms++;
    12         return;
    13     }
    14     bool spfa(int S,int T,int& flow,int& cost){
    15         queue<int>Q;
    16         memset(inq,false,sizeof(inq));
    17         for(int i=1;i<=n;i++) d[i]=inf;
    18         inq[S]=true;d[S]=0;a[S]=inf;Q.push(S);
    19         while(!Q.empty()){
    20             int u=Q.front();Q.pop();inq[u]=false;
    21             for(int i=fch[u];i!=-1;i=adj[i].next){
    22                 int v=adj[i].y;
    23                 if(adj[i].cap>adj[i].flow&&d[v]>d[u]+adj[i].w){
    24                     d[v]=d[u]+adj[i].w;
    25                     a[v]=min(a[u],adj[i].cap-adj[i].flow);
    26                     p[v]=i;
    27                     if(!inq[v]) inq[v]=true,Q.push(v);
    28                 }
    29             }
    30         } if(d[T]==inf) return false;
    31         flow+=a[T];cost+=a[T]*d[T];
    32         int x=T;
    33         while(x!=S){
    34             adj[p[x]].flow+=a[T];
    35             adj[p[x]^1].flow-=a[T];
    36             x=adj[p[x]].x;
    37         } return true;
    38     }
    39     int solve(int S,int T){
    40         int flow=0,cost=0;
    41         while(spfa(S,T,flow,cost));
    42         return cost;
    43     }
    44 }sol;
  • 相关阅读:
    C指针
    redis五种基本数据类型
    mongoDB MapReduce
    JSON传参
    mongodb查询实练
    逻辑数据结构和存储数据结构
    线性表的顺序存储和链式存储
    数据结构和算法关系
    UIActivityIndicatorView使用
    Swift中格式化日期
  • 原文地址:https://www.cnblogs.com/chxer/p/4531721.html
Copyright © 2011-2022 走看看