Hi,
I'm trying to write a code in python that takes an array of integers as
sources, an array of integers as sinks, and an array of an array of
integers of capacities, returning the maximum flow. I'm new to python and I
got memory error, can you plaese help me because i have no idea how to
solve this problem?
entrances: sources
exits: sinks
path: capacities
------------------------------------------------------------------------------------------------------------------
def answer(entrances, exits, path):
    maxflow = 0
    for i in exits:
        path[i] = [0] * len(path)
    for i in range(len(path)):
        for j in entrances:
            path[i][j] = 0
    for i in entrances:
        augpathgen = bfs_paths(path, i, exits)
        while True:
            try:
                augpath = next(augpathgen)
            except StopIteration:
                break
            flows = [path[augpath[j]][augpath[j+1]] for j in
range(len(augpath)-1)]
            minCap = min(flows)
            maxflow += minCap
            for j in range(len(augpath)-1):
                path[augpath[j]][augpath[j+1]] -= minCap
    return maxflow

def bfs_paths(graph, start, goal):
    queue = [(start, [start])]
    while queue:
        (vertex, path) = queue.pop(0)
        for next in range(len(graph[vertex])):
            if graph[vertex][next] != 0:
                if next in goal:
                    yield path + [next]
                elif next not in path:
                    queue.append((next, path + [next]))
--------------------------------------------------------------------------------------------------------------------
thanks a lot
El
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to