明天再拍一遍

 #include <iostream>
#include <queue>
using namespace std;
const int N = ;
const int INF = 0x7FFFFFFF;
int n,m,map[N][N],path[N],flow[N],start,end;
queue<int> q;
int bfs()
{
int i,t;
while(!q.empty()) q.pop();
memset(path,-,sizeof(path));
path[start]=,flow[start]=INF;
q.push(start);
while(!q.empty())
{
t=q.front();
q.pop();
if(t==end) break;
for(i=;i<=m;i++)
{
if(i!=start && path[i]==- && map[t][i])
{
flow[i]=flow[t]<map[t][i]?flow[t]:map[t][i];
q.push(i);
path[i]=t;
}
}
}
if(path[end]==-) return -;
return flow[m]; //一次遍历之后的流量增量
}
int Edmonds_Karp()
{
int max_flow=,step,now,pre;
while((step=bfs())!=-)
{ //找不到增路径时退出
max_flow+=step;
now=end;
while(now!=start)
{
pre=path[now];
map[pre][now]-=step; //更新正向边的实际容量
map[now][pre]+=step; //添加反向边
now=pre;
}
}
return max_flow;
}
int main()
{
int i,u,v,cost;
while(scanf("%d %d",&n,&m)!=EOF)
{
memset(map,,sizeof(map));
for(i=;i<n;i++)
{
scanf("%d %d %d",&u,&v,&cost);
map[u][v]+=cost; //not just only one input
}
start=,end=m;
printf("%d\n",Edmonds_Karp());
}
return ;
}

最新文章

  1. Android 中关于ListView分割线的设置
  2. HDU2544 最短路dij
  3. 奇妙的动态代理:EF中返回的对象为什么序列化失败
  4. for 循环
  5. [bzoj1296][SCOI2009]粉刷匠(泛化背包)
  6. [原]Fedora 20的yum配置
  7. C++ 输入输出文件流(ifstream&amp;ofstream)
  8. 常用Oracle SQL语句(汇总版)
  9. 关于matlab鼠标响应
  10. (Problem 35)Circular primes
  11. gitLab添加ssh key
  12. 【Socket计划】使用C++实现Server结束Client结束
  13. HTML 相同name 传递一个数组
  14. 嵌入式linux下wifi网卡的使用(四)——应用程序sub_supplicant编译
  15. JS基础:基于原型的对象系统
  16. RestTemplate的设置及使用
  17. Linux必备150个命令
  18. 【Android】Android 代码判断是否获取ROOT权限(一)
  19. Mongo数据库操作/数据库版本号
  20. 转载:C# 将引用的DLL文件放到指定的目录下

热门文章

  1. Log4j 2使用教程
  2. 常用的sql语句(转)
  3. DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键
  4. C++小思
  5. zabbix再爆高危SQL注入漏洞,可获系统权限
  6. cocos2d调度器(定时执行某函数)
  7. Sqli-LABS通关笔录-1
  8. 一次手工注入waf [转载]
  9. Android中获取IMSI和IMEI
  10. Java RMI 框架