poj 1149 PIG
建图才是王道,建完图就是裸最大流问题了
建图参考:
http://wenku.baidu.com/view/0ad00abec77da26925c5b01c.html
/*最大流问题*/
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
int c[105][105];
int a[105];
int flow[105][105];
int pre[105];
int pig[1005];
bool visit[1005];
int previsitor[1005];
int m,n;
const int inf = 100000000;
void init()
{
for(int i = 0;i<1005;i++)
{
previsitor[i] = 0;
visit[i] = false;
pig[i] = 0;
}
for(int i = 0;i<105;i++)
{
for(int j = 0;j<105;j++)
{
c[i][j] = 0;
flow[i][j] = 0;
}
a[i] = 0;
pre[i] =0;
}
}
int maxFlow()
{
int ans = 0;
queue<int>q;
while(1)
{
memset(a,0,sizeof(a));
q.push(0);
a[0] = inf;
while(!q.empty())
{
int temp = q.front();
q.pop();
for(int i = 1;i<=n+1;i++)
{
if(!a[i]&&c[temp][i]>flow[temp][i])
{
if(c[temp][i]-flow[temp][i]<a[temp])
{
a[i] = c[temp][i] - flow[temp][i];
}
else
a[i] = a[temp];
pre[i] = temp;
q.push(i);
}
}
}
if(a[n+1]==0)
break;
for(int i = n+1;i!=0;i=pre[i])
{
flow[pre[i]][i] += a[n+1];
flow[i][pre[i]] -= a[n+1];
}
ans+=a[n+1];
}
return ans;
}
int main()
{
while(scanf("%d %d",&m,&n)!=EOF)
{
init();
for(int i = 1;i<=m;i++)
{
scanf("%d",&pig[i]);
}
for(int i = 1;i<=n;i++)
{
int A,B,room;
scanf("%d",&A);
for(int j = 0;j<A;j++)
{
scanf("%d",&room);
if(!visit[room])
{
visit[room] = true;
c[0][i] += pig[room];
previsitor[room] = i;
}
else
{
c[previsitor[room]][i] = inf;
previsitor[room] = i;
}
}
scanf("%d",&B);
c[i][n+1] = B;
}
int ans = maxFlow();
printf("%d\n",ans);
}
return 0;
}
poj 1149 PIG相关推荐
- POJ 1149 PIGS 最大流建模
点击打开链接 PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14204 Accepted: 6305 Desc ...
- poj 1149 PIGS【最大流】
建图:s向所有猪圈的第一个顾客连流量为这个猪圈里住的数量,然后对于之后每个来这个猪圈的顾客,由他前一个顾客向他连边权为无穷的边,然后每个顾客向t连流量为这个顾客购买上限的边.然后跑最大流 #inclu ...
- POJ 1149 PIGS
POJ_1149 这个题目搞得我比较纠结,具体的思想还是看看这篇博客吧. http://imlazy.ycool.com/post.2059102.html #include<stdio.h&g ...
- POJ 1149 最大流建图 PIGS
题意: 给出猪圈个数 m 和买家人数 n 然后给出m个猪圈的猪的头数.. 接下来 n 行.. 给出mm a1 a2 .. a(mm) k 例如 2 1 5 3 表示第i+1个用户 有mm(2) 个猪圈 ...
- POJ 1149(最大流)
这道题应该都能想到朴素的有n*m+个点的建图方案吧,呵呵,显然是不行的. 那么怎么办? 其实我们可以这样想:一个人能买到的猪有两个来源: ①来自自己第一次打开的猪圈 ②来自之前别人打开的猪圈 想到了这 ...
- poj pku图论、网络流入门题总结、汇总
poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...
- POJ 图论分类 + DP(较全 自己又加了点)
DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(D ...
- 网络流建模汇总(转自Edelweiss)
最大流 <POJ 1149 PIGS> [题目大意] 有 M 个猪圈,每个猪圈里初始时有若干头猪.一开始所有猪圈都是关闭的.依 次来了 N 个顾客,每个顾客分别会打开指定的几个猪圈 ...
- 网络流(所有常用类型网络流算法的模板)
网络流 网络流算法讲解 关键代码讲解 最大流 EK Dinic ISAP 无源汇 无源汇上下界可行流 有源汇 有源汇上下界可行流 有源汇上下界最大流 有源汇上下界最小流 多源汇 多源汇最大流 费用流 ...
最新文章
- [转载]Google用户体验设计准则
- maven 安装本地jar_使用Maven安装本地jar
- Error: Cannot find module 'json-schema-faker' YAPI部署
- mysql 自动分表_Mysql Event 自动分表
- 一加Nord 2配置细节曝光:天玑1200芯片+5000万像素旗舰主摄
- 喷水装置2(nyoj12)
- java 控制线程的顺序_【Java多线程系列四】控制线程执行顺序
- Win11之C盘终极清理工具
- 苹果核 - iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上...
- 平面设计计算机基本配置,2017平面设计使用的电脑配置
- 手机木马以及移动安全
- java计算机毕业设计评标专家管理信息系统源程序+mysql+系统+lw文档+远程调试
- 简易中控紫猫插件版(2)基本思路介绍
- matlab由滤波的系数得到传输函数 设计带通滤波器 design fdatool设计IIR带通滤波器
- 微信服务器拒绝发送离线文件,解答:微信怎么接收QQ离线消息?-qq离线文件
- RED5与tomcat整合
- 2022校园春季招聘自带内推码投递链接合集
- LuceneElasticSeach
- 科技云报道:2022年,产业互联网如何重建安全边界?
- 计算机图形学2--光栅扫描系统
热门文章
- 最大似然法,贝叶斯估计、最小错误贝叶斯决策Excel数据分类处理(介绍+Python实现)
- java-php-python-智慧校园实习岗位需求对接网络平台计算机毕业设计
- 内向者优势 原版_性格内向的人如何笑傲职场?职业规划三步走,为你铺平道路...
- 大学英语口语测试软件,大学英语口语测试技巧
- 小米12sPro和小米12SUltra哪个值得买 两者配置对比
- GUI Guider设计UI界面移植到STM32
- 北大数学系“扫地僧”韦东奕爆红!拒绝哈佛 offer,留任北大,却因长相引热议...
- 真正的人工智能已经存在吗
- Oracle游标共享,父游标和子游标的概念
- ubuntu启动无法进系统:emergency mode! After logging in, type journalctl -xb to view system logs,