Here is the download speed implementation:
function downloadSpeed(n, m, edges):
// Build capacity matrix
capacity = 2D array of size n x n, all 0
adj = adjacency list
for (u, v, c) in edges:
capacity[u][v] = capacity[u][v] + c
adj[u].append(v)
adj[v].append(u)
// Run Edmonds-Karp from 1 to n
maxFlow = edmondsKarp(n, 1, n, capacity, adj)
print maxFlow
Remember to handle multiple edges between same nodes by summing capacities.
Time: . Space: .