1018 Public Bike Management (30 分) Python DFS

这个问题比较坑的一点就是注意调整沿途车的数量只在去程做,回程不做。也就是说,只有前往问题车站的路上才可以调整车辆。

使用DFS在做的时候,对每一个站点 i 会维护两个参数require和extra,表示在当前站点去程带去的车辆数和回程带回的车辆数。由于上面所述的那一点,每一站计算完成require和extra后,下一站只能由多出来的extra辆车去填补该站缺少的车,不能用该站多余的车填补前面几站缺少的车。也就是说,require只能增加,extra可增可减。明白这一点,问题就好解决了。

下面是Python3的AC代码:

cmax,n,sp,m = [int(x) for x in input().split() ]

C = [0] + [ int(x) for x in input().split() ]

Neib = [ {} for i in range(n+1) ]

for i in range(m):
    si,sj,t = [ int(x) for x in input().split() ]
    Neib[si][sj] = t
    Neib[sj][si] = t

minpath = []
minrequire = cmax+1
minextra = cmax+1
mindis = -1
vis = [0] * (n+1)
def dfs (Neib,path,dis,require,extra,st):
    global minrequire
    global minextra
    global mindis
    global minpath

    #print(path,dis,require,extra,st)

    vis[st] = 1
    if st ==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值