pku 1149 PIGS(最大流)
这题的网络是这样建的。设一个源点s,s将于客户节点相连,连接方式为对考虑一个猪圈是第一次被光顾s将于这位顾客之间有一条流容量是该猪圈的猪数,若这个猪圈被人光顾过,则在这个顾客和前一个顾客间有一条无限流量的通道。依次下去完成顾客节点和s,顾客节点和顾客阶段间的网络。最后是顾客和汇点的网络,每个顾客和汇点t都有条通道,容量是顾客希望购买的数量。
- /*pku1149
- Name: PIGS
- Date: 27-07-08 16:42
- Description: 最大流
- */
- #include<stdio.h>
- #include<algorithm>
- #define pr printf
- #define MAX 10000000
- int pig[1002][103];
- int a[103][103],max;//容量
- int b[103][103];
- int m,n,min;
- #define SIZE 1000
- #define MAXN 103
- #define inf 1000000000
- int max_flow(int n,int mat[][MAXN],int source,int sink,int flow[][MAXN]){
- int pre[MAXN],que[MAXN],d[MAXN],p,q,t,i,j;
- if (source==sink) return inf;
- for (i=0;i<n;i++)
- for (j=0;j<n;flow[i][j++]=0);
- for (;;){
- for (i=0;i<n;pre[i++]=0);
- pre[t=source]=source+1,d[t]=inf;
- for (p=q=0;p<=q&&!pre[sink];t=que[p++])
- for (i=0;i<n;i++)
- if (!pre[i]&& (j=mat[t][i]-flow[t][i]))
- pre[que[q++]=i]=t+1,d[i]=d[t]<j?d[t]:j;
- else if (!pre[i]&& (j=flow[i][t]))
- pre[que[q++]=i]=-t-1,d[i]=d[t]<j?d[t]:j;
- if (!pre[sink]) break;
- for (i=sink;i!=source;)
- if (pre[i]>0)
- flow[pre[i]-1][i]+=d[sink],i=pre[i]-1;
- else
- flow[i][-pre[i]-1]-=d[sink],i=-pre[i]-1;
- }
- for (j=i=0;i<n;j+=flow[source][i++]);
- return j;
- }
- int main(){
- int i,j,A,B,key;
- scanf("%d%d",&m,&n);
- memset(a,inf,sizeof(a));//0表示没有流量
- for(i=1;i<=m;i++)
- {
- scanf("%d",&pig[i][0]);
- pig[i][102]=0;
- }
- for(i=1;i<=n;i++)
- {
- scanf("%d",&A);
- for(j=1;j<=A;j++)
- {
- scanf("%d",&key);
- if(pig[key][102]==0){a[0][i]+=pig[key][0];}//猪圈只和第一个顾客相连
- for(int k=pig[key][102];k>=1;k--){
- a[pig[key][k]][i]=MAX;
- }
- pig[key][++pig[key][102]]=i;
- }
- scanf("%d",&B);
- a[i][n+1]=B;
- }
- max=max_flow(n+2,a,0,n+1,b);//0是源点,n+1是汇点
- pr("%d/n",max);
- }
pku 1149 PIGS(最大流)相关推荐
- POJ 1149 PIGS 最大流建模
点击打开链接 PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14204 Accepted: 6305 Desc ...
- poj 1149 PIGS【最大流】
建图:s向所有猪圈的第一个顾客连流量为这个猪圈里住的数量,然后对于之后每个来这个猪圈的顾客,由他前一个顾客向他连边权为无穷的边,然后每个顾客向t连流量为这个顾客购买上限的边.然后跑最大流 #inclu ...
- POJ1149 PIGS(最大流)
题意: 有一个人,他有m个猪圈,每个猪圈里面有一定数量的猪,但是每个猪圈的门都是锁着的,他自己没有钥匙,只有顾客有钥匙,一天依次来了n个顾客,(记住是依次来的)他们每个人都有一些钥匙,和他 ...
- POJ 1149(最大流)
这道题应该都能想到朴素的有n*m+个点的建图方案吧,呵呵,显然是不行的. 那么怎么办? 其实我们可以这样想:一个人能买到的猪有两个来源: ①来自自己第一次打开的猪圈 ②来自之前别人打开的猪圈 想到了这 ...
- POJ 1149 PIGS
POJ_1149 这个题目搞得我比较纠结,具体的思想还是看看这篇博客吧. http://imlazy.ycool.com/post.2059102.html #include<stdio.h&g ...
- 网络流题集【夏天的风】
[HDU] 1532Drainage Ditches(基础) [最大流] 3549 Flow Problem(基础) [最大流] 3572 Task Schedule [最大流]任务 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 图论练习题(存起来练)
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Man ...
最新文章
- 10 个 Python 工程师,9 个不合格!
- 开发有新意的短视频,你就是荣耀王者
- 第四篇 群聚类非线性表的编程实验 第11章 应用图的遍历算法编程
- u盘如何linux双系统,怎么用U盘在Windows7下再安装ubuntu形成双系统?
- IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)
- flutter 返回指定界面_Flutter页面路由导航及传参
- php新窗口打开链接,wordpress如何设置在新窗口打开链接
- 主线程中访问网络有限制?无法得到数据,必须另起线程
- OpenFOAM大涡模拟湍流模型之Smagorinsky模型代码详解
- host速度 mtk usb_MTK功能机MT2503平台USB充电电流设置
- Google Guice依赖注入框架使用
- Sklearn中的二分类模型可以进行多分类的原理
- 用js写一个功德木鱼
- redis单点故障问题
- 【第三方互联】4、分享至腾讯QQ、新浪微博(sina)
- 国内银行英文简称及全称
- 请介绍一下ivac 2L
- Fast Burst Images Denoising
- Interview之NLP:人工智能领域求职岗位—自然语言处理NLP算法工程师职位的简介、薪资介绍、知识结构之详细攻略
- 树莓派之禁用自动黑屏休眠模式
热门文章
- C# 基础,JOject JArray构造json对象
- 【管理心得之二十一】管得少就是管得好
- 我没钱 如何推广自己的网站
- Windows Mobile 6.1开发笔记
- LumaQQ.NET,基于LumaQQ的.NET开源QQ开发包
- 游戏开发之C++对C的扩展(C++基础)
- Hadoop和Spark三大核心组件介绍与对比
- git报错之fatal: protocol error: bad line length character: No This
- odoo 对 many2many one2many的操作
- 关于《停止学习框架》 - 讨论