poj1273解题报告(最大流 EK算法)

原创 2015年07月08日 14:40:02

题目大意:现在有m个池塘(1m开始编号,1为源点,m为汇点),n条水渠,给出这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.

解题思路:最大流的经典题目,套模板即可完成,直接用的LRJ的模板

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=201;
const int INF=99999999;
int n,m,sum,s,t;//s,t为始点和终点
int flow[N][N],cap[N][N],a[N],p[N];
//分别为:flow[u][v]为<u,v>流量、cap[u][v]为<u,v>容量、a[i]表示源点s到节点i的路径上的最小残留量、p[i]记录i的前驱
void Edmonds_Karp()
{
int i,u,v;
queue<int>q;//队列,用bfs找增广路
while(1)
{
   memset(a,0,sizeof(a));//每找一次,初始化一次
   a[s]=INF;
   q.push(s);//源点入队
   while(!q.empty())
   {
    u=q.front();
    q.pop();
    for(v=1;v<=m;v++)
    {
     if(!a[v]&&flow[u][v]<cap[u][v])
     {
      p[v]=u;
      q.push(v);
      a[v]=min(a[u],cap[u][v]-flow[u][v]);//s-v路径上的最小残量
     }
    }
   }
   if(a[m]==0)//找不到增广路,则当前流已经是最大流
    break;
   sum+=a[m];//流加上
   for(i=m;i!=s;i=p[i])// //从汇点顺着这条增广路往回走
   {
    flow[p[i]][i]+=a[m];//更新正向流量
    flow[i][p[i]]-=a[m];//更新反向流量
   }
}
printf("%d\n",sum);
}
int main()
{
//freopen("in.txt","r",stdin);
int v,u,w;
    while(scanf("%d%d",&n,&m)!=EOF)//n是边数,m是点数
{
   s=1;//从1开始
   t=m;//m为汇点
   sum=0;//记录最大流量
   memset(flow,0,sizeof(flow));//初始化
   memset(cap,0,sizeof(cap));
   while(n--)
   {
    scanf("%d%d%d",&u,&v,&w);
    cap[u][v]+=w;//注意图中可能出现相同的边
   }
   Edmonds_Karp();
}
return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

POJ - 1274 The Perfect Stall解题报告(网络流最大流EK 经典建图)

题目大意:大概就是给你n头牛和m个位置,然后告诉你每个牛喜欢在哪些摊位上面产奶,问你如何分配这些牛才能得到最多的产奶量。

poj 1273 最大流 EK算法

最大流问题:从源点到终点运送货物,经过一些中转站,中转站之间有路径连接,每条路径有运送货物量的上限,求最多能运送多少货物  找最大流就是每次找增广路径,并更新网络,直到找不到增广路径 #inc...

HDU1532/POJ1273 Drainage Ditches 最大排水量 网络最大流 EK、Dinic、ISAP算法

题意:为了不让水淹三叶草,现在修了很多排水管,现在问从源点到汇点的最大排水量。

POJ1273 Drainage Ditches(裸最大流,EK,DINIC)

注意重边。 EK: #include #include #include #define min(a,b) a<b?a:b using namespace std; const int N...

(POJ1273)Drainage Ditches(裸最大流,EK模板)

Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 68869 Acce...

最大流(增广路-EK)poj1273

Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31138...

Poj 1273 Drainage Ditches (最大流EK+ISAP)

题目链接:http://poj.org/problem?id=1273 题意:下雨的时候约翰的田里总是积水,积水把他种的三叶草给淹了,他于是做了若干排水沟,每条沟在起始处安置一个阀门来控制这条沟的最...

hdu1532 & pku1273 Drainage Ditches 网络流(最大流EK算法)

hdu1532 &pku1273  Drainage Ditches(最大流EK算法)   本题的算法流程 1.初始化pre 2.BFS求增广路径P      不存在:break ,re...

POJ 1149 网络流最大流 解题报告

PIGSDescriptionMirko works on a pig farm that consists of M locked pig-houses and Mirko can’t unlock...

POJ 3281 网络流最大流 解题报告

DiningDescriptionCows are such finicky eaters. Each cow has a preference for certain foods and drink...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)