zoukankan      html  css  js  c++  java
  • 放两个模版

    最大流

     1 struct edge{
     2     int v,w;
     3     edge*next,*r;
     4 }e[maxm],*fir[maxn],*cur[maxn],*pt=e;
     5 void add(int u,int v,int w){
     6     pt->v=v;pt->w=w;
     7     pt->next=fir[u];
     8     fir[u]=pt++;
     9 }
    10 void addedge(int u,int v,int w){
    11     add(u,v,w);add(v,u,0);
    12     fir[u]->r=fir[v];fir[v]->r=fir[u];
    13 }
    14 bool bfs(){
    15     queue<int>Q;Q.push(S);
    16     clr(d,0);d[S]=1;
    17     while(!Q.empty()){
    18         int x=Q.front();Q.pop();
    19         for(edge*e=fir[x];e;e=e->next){
    20             if(e->w&&!d[e->v]){
    21                 d[e->v]=d[x]+1;Q.push(e->v);
    22             }
    23         }
    24     }
    25     return d[T];
    26 }
    27 int dfs(int x,int w){
    28     if(x==T||!w) return w;
    29     int f=0;
    30     for(edge*&e=cur[x];e;e=e->next){
    31         if(e->w&&d[e->v]==d[x]+1){
    32             int g=dfs(e->v,min(e->w,w));
    33             if(g>0){
    34                 f+=g;
    35                 e->w-=g;
    36                 e->r->w+=g;
    37                 if(!(w-=g)) break;
    38             }
    39         }
    40     }
    41     return f;
    42 }
    View Code

    最小费用最大流

    待补。。

  • 相关阅读:
    C语言volatile关键字的用法
    UDP广播包
    进程和线程的区别
    Unix/Linux进程间通信
    虚拟空间,malloc
    自我介绍
    java初始化顺序
    java 队列基础操作
    java IO基础操作
    Python中的Tab补全功能添加
  • 原文地址:https://www.cnblogs.com/chensiang/p/4771293.html
Copyright © 2011-2022 走看看