PKU 1087 网络最大流

题意:现在有m个设备,n种电源插座,k个适配器。适配器a b作用为可以把a插头转成b插头,也就是原来用a电源的设备现在可以用b电源

需要注意的几点:

1、"only one receptacle of each type",对于n种电源插座,每种类型只有一个

2、"No two devices will have exactly the same name",对于m个设备,彼此不相同

3、1<=m,n,k<=100,所以最多出现电源类型数为4*100=400,再加个m个设备与一个源点一个汇点,邻接矩阵的大小最少应为502.

4、适配器的数量是无限的

5、求最小几个设置没有电源

 

分析:一道很标准的网络最大流问题,关键在于建图

1、取源点、汇点分别标号0,1

2、源点到n个电源有容量为1的边

3、相应电源到m个设备有一条容量为1的边

4、m个设备到汇点有一条容量为1的边

5、k个适配器,如果a b,表示b电源可以转换成a电源,即电源b到电源a有一条容量无限的边

6、求源点到汇点网络最大流量

 

比较:这里也可以建图之前先用Floyd算法处理一下传递关系,即设备a如果用b电源,求出b电源可以转换的所有电源,这样也就说明设备a可以采用这些电源。这样可以减少建图的节点数,为m+n+2个节点。实验结果显示用Floyd算法处理后运行,运行时间增加,原因可能是Floyd是O(n3)时间复杂度。所以下面只给出基于分析没有采用Floyd处理的代码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值