poj1273 Drainage Ditches 最大流EK
来源:互联网 发布:淘宝卖家交保证金 编辑:程序博客网 时间:2024/05/17 01:07
题目是要求一个最大流,给出的数据是容量C。1是源点,m是汇点。用朴素的EK算法,不断寻求增广路,如果找到了汇点就从汇点开始,正向弧加上一个增广路的最小值,反向弧减去增光路的最小值,当没有找到汇点的时候退出。
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#include<cmath>#include<cctype>using namespace std;#define MIN(a,b) (a)<(b)? a:b#define INF 2000000int n,m;int a[205][205];int pre[205],flag[205];int Min;int EK(int beg,int End){ int ret=0; while(1) { memset(flag,0,sizeof(flag)); memset(pre,0,sizeof(pre)); Min=INF; queue<int>q; q.push(beg); while(!q.empty()) { int t=q.front(); q.pop(); if(flag[t]) continue; flag[t]=1; for(int i=1;i<=m;i++) { if(!flag[i]&&a[t][i]>0) { pre[i]=t; Min=MIN(a[t][i],Min); q.push(i); } } } int j=m; while(pre[j]) { a[pre[j]][j]-=Min; a[j][pre[j]]+=Min; j=pre[j]; } if(pre[End] == 0) break; else ret+=Min; } return ret;}int main(){ while(cin>>n>>m) { memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { int x,y,z; cin>>x>>y>>z; a[x][y]+=z;//这个地方不累加就WA了。应该是有这样的数据。 } cout<<EK(1,m)<<endl; } return 0;}
- poj1273 Drainage Ditches 最大流EK
- POJ1273 Drainage Ditches(裸最大流,EK,DINIC)
- (POJ1273)Drainage Ditches(裸最大流,EK模板)
- POJ1273 Drainage Ditches(最大流)
- POJ1273 Drainage Ditches 【最大流】
- poj1273 Drainage Ditches(最大流入门 EK+Dinic模板)
- POJ1273 Drainage Ditches——最大流
- 网络最大流问题 poj1273 Drainage Ditches
- POJ1273 Drainage Ditches最大流模板
- poj1273 Drainage Ditches 最大流 dinic算法
- poj1273--Drainage Ditches(最大流)
- POJ1273 Drainage Ditches 【最大流Dinic】
- POJ1273 Drainage Ditches【最大流】【SAP】
- poj1273 Drainage Ditches(最大流)
- POJ1273 Drainage Ditches(最大流)
- 【POJ1273】Drainage Ditches-最大流问题
- poj1273 Drainage Ditches (最大流模板)
- POJ1273--Drainage Ditches(最大流)
- Fragment(片元)(二)(原文翻译)
- char str[] 和 char *str的区别
- php查询mysql表中所有字段详细信息
- u-boot下运行led测试测程序
- gstreamer 手册
- poj1273 Drainage Ditches 最大流EK
- document.getElementsByClassName的理想实现
- hdu 4576 Robot 杭州邀请赛第一题
- hdu--1247--Hat’s Words(一般)
- android 简析自定义布局、布局的执行流程
- 黑马程序员_高新技术之代理
- 曲线拟合和插值的区别
- Android 异步加载解决方案
- android 开发环境搭建