#include<stdio.h>

#include<string.h>

#define N 300

#define inf 0x7fffffff

#include<queue>

using namespace std;

struct node {

  int u,v,w,next;

}bian[N*4];

int head[N],yong,d[N],s,t;

void addedge(int u,int v,int w) {

   bian[yong].u=u;

   bian[yong].v=v;

   bian[yong].w=w;

   bian[yong].next=head[u];

   head[u]=yong++;

}

int Min(int a,int b) {

return a>b?b:a;

}

int bfs() {

  int i,cur,v;

  queue<int>q;

  memset(d,0,sizeof(d));

  q.push(s);

  d[s]=1;

  while(!q.empty()) {

    cur=q.front();

    q.pop();

    for(i=head[cur];i!=-1;i=bian[i].next) {

        v=bian[i].v;

        if(bian[i].w&&!d[v]) {

            d[v]=d[cur]+1;

            if(v==t)

                return 1;

            q.push(v);

        }

    }

  }

  return 0;

}

int dfs(int u,int limit) {

   int cost=0,v,i,flow;

   if(u==t)

    return limit;

   for(i=head[u];i!=-1;i=bian[i].next) {

    v=bian[i].v;

    if(bian[i].w&&d[v]==d[u]+1) {

        flow=dfs(v,Min(limit-cost,bian[i].w));

        if(flow>0) {//

            bian[i].w-=flow;

            bian[i^1].w+=flow;

            cost+=flow;

            if(limit==cost)//如果已经搜到了满流就跳出

                break;

        }

        else

            d[v]=-1;//如果流量等于零,再遇到这个点就进行不下去了

    }

   }

   return cost;

}

int dinic() {

int sum=0;

while(bfs())//建层次图

    sum+=dfs(s,inf);//多次dfs搜索s-t增光路求可行流

    return sum;

}

int main(){

     int m,i,j,k,n;

     while(scanf("%d%d",&m,&n)!=EOF) {

        yong=0;

        memset(head,-1,sizeof(head));

        s=1;t=n;

        while(m--){

            scanf("%d%d%d",&i,&j,&k);

            addedge(i,j,k);//建边

            addedge(j,i,0);//建反向边

        }

        printf("%d\n",dinic());

     }

return 0;

}

最新文章

  1. SQL Server 2012 创建数据库快照
  2. VS2010 调试不会命中当前断点
  3. 使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法
  4. 【转】c++中Vector等STL容器的自定义排序
  5. linux基础命令学习(三)Vim使用
  6. Oracle10g数据类型
  7. SQL Server查询性能优化——覆盖索引(二)
  8. hdu 3461 Code Lock
  9. sql server 实现sleep延时
  10. idea 红线 并提示idea cant resolve symbol
  11. python类中的内置函数
  12. 解决操作WordPress时提示输入FTP信息
  13. How to Auto Execute Commands/Scripts During Reboot or Startup.
  14. 【Unity/Kinect】使用KinectManager的一般流程
  15. 编译 &amp; 执行 C++ 程序
  16. Mysql5.7全新的root密码规则
  17. Linux进程间通信的几种方式总结--linux内核剖析(七)
  18. 基于windows fiber的协程(coroutine)实现
  19. 2.使用ngx_http_auth_basic_module模块为不带认证的资源添加授权
  20. 禁用F12和鼠标右键,防止查看控制台代码

热门文章

  1. bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
  2. 【高德地图API】VS2012或者VS2013添加高德地图v2.1.1版本SDK失败
  3. win10系统下,开启数据库远程连接方式
  4. PCB 自动发送邮件---加入表格实现方法
  5. 题解报告:hdu 1142 A Walk Through the Forest
  6. MVC系列学习(一)-新语法
  7. Scala-基础-数据类型
  8. android学习之路资料集合
  9. 高级Java知识
  10. JS——“==”与“===”