poj 1459 Power Network
来源:互联网 发布:生化危机6mac 编辑:程序博客网 时间:2024/06/08 14:33
POJ1459 Power Network 点击打开链接
大致题意:
题蛮长的,但是一堆废话,我读了三遍才懂。
现在有np个发电站,每个发电站能生产最多P电量。有nc个顾客,每个顾客能消耗最大C电量。
其余的点代表转电站,既不消耗也不生产。每两个点之间有一条输电线,最大输送电量为L。
现在问,所有的顾客消耗的总电量最大是多少。。。
这道题就是求最大流,不过源点不唯一,汇点不唯一,不能直接使用dinic。
那怎么办呢?
我们做以往的最大流时知道,源点输送的电量是无穷的,所以我们在设置一个点,做总源点,它指向全部的发电站,
总源点到达各发电站的最大输送量就是每个发电站的最多生产量。
同理,我们在设个总汇点,让所有的顾客都流向它。
那这道题就转换成了求最大流。。。
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<queue>#define inf 0x3f3f3f3fusing namespace std;int dis[200];int flow[200][200];int n,np,nc,m;int bfs( ){ memset(dis,-1,sizeof(dis)); queue<int>Q; dis[0]=1; Q.push(0); while(!Q.empty()) { int top=Q.front(); Q.pop(); for(int i=0;i<=n+1;i++) { if(flow[top][i]>0&&dis[i]<0) { dis[i]=dis[top]+1; Q.push(i); } } } if(dis[n+1]>0)return 1; return 0;}int dfs(int k,int y){ if(k==n+1) return y; int fl; for(int i=0;i<=n+1;i++) { if(flow[k][i]>0&&dis[i]==dis[k]+1&&(fl=dfs(i,min(y,flow[k][i])))) { flow[k][i]-=fl; flow[i][k]+=fl; return fl; } } return 0;}int main(){ while(~scanf("%d%d%d%d",&n,&np,&nc,&m)) {//ios::sync_with_stdio(false); memset(flow,0,sizeof(flow)); char c; int x,y,z; for(int i=0;i<m;i++) { cin>>c>>x>>c>>y>>c>>z; flow[x+1][y+1]+=z; } for(int i=0;i<np;i++) { cin>>c>>x>>c>>y; flow[0][x+1]=y; } for(int i=0;i<nc;i++) { cin>>c>>x>>c>>y; flow[x+1][n+1]=y; } int ans=0,res; while(bfs()) {//cout<<"++"<<endl; while((res=dfs(0,inf)))ans+=res; } printf("%d\n",ans); }}
阅读全文
0 0
- POJ 1459 Power Network
- POJ 1459 Power Network
- Poj 1459 Power Network
- poj 1459 Power Network
- poj 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ-1459-Power Network
- Poj 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- Tensorflow 学习笔记- tensor的声明
- OpenGL的第一天【VS2017+OpenGL环境的配置】
- ServletContextListener
- S5PV210中断系统
- Lintcode125 Backpack ||solution 题解
- poj 1459 Power Network
- Redux讲解
- JSONP是什么
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 F island
- HDU 2594 Simpsons’ Hidden Talents 两字符串前缀与后缀的最长公共部分
- 《PID控制算法的C语言实现》学习笔记
- 哈哈日语 学渣的日语N1失败经验谈
- 更改 Tomcat 使用的 JDK 版本
- 内置对象:response