power network 电网——POJ1459
| Time Limit: 2000MS | Memory Limit: 32768K | |
| Total Submissions: 27282 | Accepted: 14179 |
Description

An example is in figure 1. The label x/y of power station u shows that p(u)=x and pmax(u)=y. The label x/y of consumer u shows that c(u)=x and cmax(u)=y. The label x/y of power transport line (u,v) shows that l(u,v)=x and lmax(u,v)=y. The power consumed is Con=6. Notice that there are other possible states of the network but the value of Con cannot exceed 6.
Input
Output
Sample Input
2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20
7 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,2)8 (2,3)1 (2,4)7
(3,5)2 (3,6)5 (4,2)7 (4,3)5 (4,5)1 (6,0)5
(0)5 (1)2 (3)2 (4)1 (5)4
Sample Output
15
6
Hint
Source
while(scanf("%d%d%d%d",&n,&np,&nc,&m))
”
while(scanf("%d%d%d%d",&n,&np,&nc,&m)==4)
——————————————————————————————————————————————————————————
1 #include<cstdio>
2 #include<iostream>
3 #include<cstring>
4 #include<vector>
5 #include<queue>
6
7 using namespace std;
8 int n,np,nc,m;
9 int map[105][105];
10 bool vis[105];
11 int lays[105];
12 bool bfs()
13 {
14 queue<int>q;
15 memset(lays,-1,sizeof(lays));
16 q.push(n);
17 lays[n]=0;
18 while(!q.empty())
19 {
20 int u=q.front();
21 q.pop();
22 for(int i=0;i<=n+1;i++)
23 if(map[u][i]>0&&lays[i]==-1)
24 {
25 lays[i]=lays[u]+1;
26 if(i==n+1)return 1;
27 else
28 {
29 q.push(i);
30 }
31 }
32 }
33 return 0;
34 }
35 int dinic()
36 {
37 vector<int>q;
38 int maxf=0;
39 while(bfs())
40 {
41 q.push_back(n);
42 memset(vis,0,sizeof(vis));
43 vis[n]=1;
44 while(!q.empty())
45 {
46 int nd=q.back();
47 if(nd==n+1)
48 {
49 int minx=0x7fffffff,minn;
50 for(int i=1;i<q.size();i++)
51 {
52 int u=q[i-1],v=q[i];
53 if(map[u][v]<minx)
54 {
55 minx=map[u][v];
56 minn=u;
57 }
58 }
59 maxf+=minx;
60 for(int i=1;i<q.size();i++)
61 {
62 int u=q[i-1],v=q[i];
63 map[u][v]-=minx;
64 map[v][u]+=minx;
65 }
66 while(!q.empty()&&q.back()!=minn)
67 {
68 vis[q.back()]=0;
69 q.pop_back();
70 }
71 }
72 else
73 {
74 int i;
75 for(i=0;i<=n+1;i++)
76 {
77 if(map[nd][i]>0&&!vis[i]&&lays[i]==lays[nd]+1)
78 {
79 vis[i]=1;
80 q.push_back(i);
81 break;
82 }
83 }
84 if(i>n+1)q.pop_back();
85 }
86 }
87 }
88 return maxf;
89 }
90 int main()
91 {
92 char s[35];
93 while(scanf("%d%d%d%d",&n,&np,&nc,&m)==4)
94 {
95 memset(map,0,sizeof(map));
96 for(int i=0;i<m;i++)
97 {
98 int u,v,l;
99 scanf("%s",s);
100 sscanf(s,"(%d,%d)%d",&u,&v,&l);
101 map[u][v]+=l;
102 }
103 for(int i=0;i<np;i++)
104 {
105 int v,l;
106 scanf("%s",s);
107 sscanf(s,"(%d)%d",&v,&l);
108 map[n][v]+=l;
109 }
110 for(int i=0;i<nc;i++)
111 {
112 int v,l;
113 scanf("%s",s);
114 sscanf(s,"(%d)%d",&v,&l);
115 map[v][n+1]+=l;
116 }
117 printf("%d\n",dinic());
118 }
119
120 return 0;
121 }
power network 电网——POJ1459的更多相关文章
- POJ1459 Power Network —— 最大流
题目链接:https://vjudge.net/problem/POJ-1459 Power Network Time Limit: 2000MS Memory Limit: 32768K Tot ...
- poj1459 Power Network (多源多汇最大流)
Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...
- POJ1459 Power Network(网络最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total S ...
- POJ1459 - Power Network
原题链接 题意简述 原题看了好几遍才看懂- 给出一个个点,条边的有向图.个点中有个源点,个汇点,每个源点和汇点都有流出上限和流入上限.求最大流. 题解 建一个真 · 源点和一个真 · 汇点.真 · 源 ...
- POJ1459:Power Network(多源点多汇点的最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 31086 Accepted: 15986 题 ...
- POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Network / FZU 1161 (网络流,最大流)
POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Networ ...
- Power Network(网络流最大流 & dinic算法 + 优化)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24019 Accepted: 12540 D ...
- Power Network 分类: POJ 2015-07-29 13:55 3人阅读 评论(0) 收藏
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24867 Accepted: 12958 Descr ...
- poj 1459 Power Network : 最大网络流 dinic算法实现
点击打开链接 Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 20903 Accepted: ...
随机推荐
- 程序员你是如何使用镜像中心Harbor的?
背景 harbor即docker的私服:管理公司内部输出的镜像制品: 是VMware公司中国团队为企业用户设计的镜像注册服务器,用途:存储和分发docker镜像: 在官方的docker registr ...
- tcp上传学习二--文本文件上传
//暮雪超霸.加油!!!package tcp文本上传; import java.io.BufferedReader; import java.io.FileReader; import java.i ...
- 基于socket的netty demo
前面一文说了 基于http的netty demo 和http不一样,http可以用浏览器来充当客户端调用,所以基于socket的netty,必须要编写客户端和服务器的代码 实现功能: 客户端给服务器发 ...
- 死磕以太坊源码分析之state
死磕以太坊源码分析之state 配合以下代码进行阅读:https://github.com/blockchainGuide/ 希望读者在阅读过程中发现问题可以及时评论哦,大家一起进步. 源码目录 |- ...
- js如何替换字符串中匹配到多处中某一指定节点?
抛出一个问题,如图,搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?回到文章的标题,js如何替换字符串中匹配到多处中某一指定节点? 字符串的替换,我们首先想到的一个属性是r ...
- LeetCode557 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode contest" 输出: &q ...
- LeetCode222 判断是否为完全二叉树并求节点个数
给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置.若最底 ...
- Docker学习笔记之基本命令使用
测试的环境为Ubuntu1804. 1. search命令搜索镜像 sudo docker search centos 搜索centos相关的镜像,可以看到第一个最多星的的centos是官方的镜像,而 ...
- Win 10 Docker安装和简单使用
Win 10 Docker安装和简单使用 1.环境准备 Docker for Windows需要运行在64位Windows 10 Pro专业版.企业版或教育版(1607年纪念更新,版本14393或更高 ...
- innodb日志文件大小
innodb是用多个文件作为一组循环日志,通常不需要修改默认的日志数量,只修改每个日志文件的大小即可,要修改日志文件大小,需要完全关闭mysql,将旧的日志文件移到其他地方保存,重新配置参数,然后重启 ...