题目描述

Farmer John always wants his cows to have enough water and thus has made a map of the N (1 <= N <= 700) water pipes on the farm that connect the well to the barn. He was surprised to find a wild mess of different size pipes connected in an apparently haphazard way. He wants to calculate the flow through the pipes.

Two pipes connected in a row allow water flow that is the minimum of the values of the two pipe's flow values. The example of a pipe with flow capacity 5 connecting to a pipe of flow capacity 3 can be reduced logically to a single pipe of flow capacity 3:

+---5---+---3---+ -> +---3---+

Similarly, pipes in parallel let through water that is the sum of their flow capacities:

+---5---+

---+ +--- -> +---8---+

+---3---+

Finally, a pipe that connects to nothing else can be removed; it contributes no flow to the final overall capacity:

+---5---+

---+ -> +---3---+

+---3---+--

All the pipes in the many mazes of plumbing can be reduced using these ideas into a single total flow capacity.

Given a map of the pipes, determine the flow capacity between the well (A) and the barn (Z).

Consider this example where node names are labeled with letters:

+-----------6-----------+

A+---3---+B +Z

+---3---+---5---+---4---+

C D

Pipe BC and CD can be combined:

+-----------6-----------+

A+---3---+B +Z

+-----3-----+-----4-----+

D Then BD and DZ can be combined:

+-----------6-----------+

A+---3---+B +Z

+-----------3-----------+

Then two legs of BZ can be combined:

B A+---3---+---9---+Z

Then AB and BZ can be combined to yield a net capacity of 3:

A+---3---+Z

Write a program to read in a set of pipes described as two endpoints and then calculate the net flow capacity from 'A' to 'Z'. All

networks in the test data can be reduced using the rules here.

Pipe i connects two different nodes a_i and b_i (a_i in range

'A-Za-z'; b_i in range 'A-Za-z') and has flow F_i (1 <= F_i <= 1,000). Note that lower- and upper-case node names are intended to be treated as different.

The system will provide extra test case feedback for your first 50 submissions.

约翰总希望他的奶牛有足够的水喝,因此他找来了农场的水管地图,想算算牛棚得到的水的 总流量.农场里一共有N根水管.约翰发现水管网络混乱不堪,他试图对其进行简 化.他简化的方式是这样的:

两根水管串联,则可以用较小流量的那根水管代替总流量.

两根水管并联,则可以用流量为两根水管流量和的一根水管代替它们

当然,如果存在一根水管一端什么也没有连接,可以将它移除.

请写个程序算出从水井A到牛棚Z的总流量.数据保证所有输入的水管网络都可以用上述方法 简化.

输入输出格式

输入格式:

  • Line 1: A single integer: N

  • Lines 2..N + 1: Line i+1 describes pipe i with two letters and an integer, all space-separated: a_i, b_i, and F_i

输出格式:

  • Line 1: A single integer that the maximum flow from the well ('A') to the barn ('Z')

输入输出样例

输入样例#1:

5
A B 3
B C 3
C D 5
D Z 4
B Z 6
输出样例#1:

3 
思路:最大流
代码实现:
 #include<cstdio>
#include<cstring>
#define inf 100000000
int n,s,t,tw;
int a,b,c;
char ch[],cn[];
int h[],hs=;
struct edge{int s,n,w;}e[];
int d[],q[],head,tail;
inline int min(int x,int y){return x<y?x:y;}
void bfs(){
memset(d,,sizeof(d));
head=tail=;
d[s]=,q[head++]=s;
while(head>tail){
a=q[tail++];
for(int i=h[a];i;i=e[i].n)
if(!d[e[i].s]&&e[i].w){
d[e[i].s]=d[a]+;
if(e[i].s==t) return;
q[head++]=e[i].s;
}
}
}
int ap(int k,int w){
if(k==t) return w;
int uw=w;
for(int i=h[k];i&&uw;i=e[i].n)
if(e[i].w&&d[e[i].s]==d[k]+){
int wt=ap(e[i].s,min(uw,e[i].w));
if(wt) e[i].w-=wt,e[i^].w+=wt,uw-=wt;
else d[e[i].s]=;
}
return w-uw;
}
bool Dinic(){
bfs();
if(!d[t]) return ;
tw+=ap(s,inf);
return ;
}
int main(){
scanf("%d",&n);
s='A',t='Z';
while(n--){
scanf("%s%s%d",ch,cn,&c);
a=ch[],b=cn[];
e[++hs]=(edge){b,h[a],c},h[a]=hs;
e[++hs]=(edge){a,h[b],c},h[b]=hs;
}
while(Dinic());
printf("%d\n",tw);
return ;
}

我终于能顺手的,顺手A了,网络流真心好实现。

题目来源:洛谷

最新文章

  1. Binding
  2. Executor框架(转载)
  3. 跟我学习Storm_Storm基本架构
  4. Windows 7 IE11 F12 不能正常使用
  5. Java基础知识强化之集合框架笔记71:模拟斗地主洗牌和发牌并对牌进行排序的案例
  6. 【细说Java】揭开Java的main方法神秘的面纱
  7. MySQL Administrator的简单操作
  8. 理解VMware虚拟机下网络连接的三种模式(如何配置虚拟机上网)
  9. bzoj 2109: [Noi2010]Plane 航空管制
  10. express框架开发案例
  11. CodeForces 433C Ryouko&#39;s Memory Note (中位数定理)
  12. 开启mac上印象笔记的代码块
  13. vue事件处理器
  14. 2018.11.01 洛谷P3953 逛公园(最短路+dp)
  15. [异常记录-12]Web Deploy部署:未能连接到远程计算机,请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程(&quot;Web Management Service&quot;)
  16. Leetcode_6. Zigzag convertion
  17. HNOI2018毒瘤
  18. DPDK+Pktgen 高速发包测试
  19. vmvare fusion 8
  20. 20181103_C#线程初探, BeginInvoke_EndInvoke

热门文章

  1. Web Api之Cors跨域(干货)---大家一定要看清我写的内容哦
  2. laravel学习一
  3. 暴力/思维 HDOJ 5386 Cover
  4. 解决:阿里云ECS上启动tomcat后,第一次访问时间特别长
  5. 生成清除某个数据库下的所有表的SQL语句
  6. 6.12---Swagger中paramType---swagger的RequestParam和ApiImpliciParam----Example中方法带有selective
  7. php数据类型的转换
  8. cocos2dx在windows下搭建环境android报错
  9. D1-mini esp8266的资料备份
  10. 生成Nuget 源代码包来重用你的Asp.net MVC代码