Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Speedy category for Node Disconnected Users by ika93
def disconnected_users(network, users, start, crashed):
def rec(safe, crashed, current, connections):
for x in current:
if x not in crashed:
safe.append(x)
if x in connections:
rec(safe, crashed, connections[x], connections)
connections = {}
for a, b in network:
if a in connections:
connections[a].append(b)
else:
connections[a] = [b]
if start not in crashed:
safe = [start]
if start in connections:
rec(safe, crashed, connections[start], connections)
else:
safe = []
return sum([users[x] for x in users.keys() if x not in safe])
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert disconnected_users([
['A', 'B'],
['B', 'C'],
['C', 'D']
], {
'A': 10,
'B': 20,
'C': 30,
'D': 40
},
'A', ['C']) == 70, "First"
assert disconnected_users([
['A', 'B'],
['B', 'D'],
['A', 'C'],
['C', 'D']
], {
'A': 10,
'B': 0,
'C': 0,
'D': 40
},
'A', ['B']) == 0, "Second"
assert disconnected_users([
['A', 'B'],
['A', 'C'],
['A', 'D'],
['A', 'E'],
['A', 'F']
], {
'A': 10,
'B': 10,
'C': 10,
'D': 10,
'E': 10,
'F': 10
},
'C', ['A']) == 50, "Third"
print('Done. Try to check now. There are a lot of other tests')
Jan. 25, 2019
Comments: