outb = {1: [2],
2: [4, 5],
3: [5, 11, 12],
4: [6, 7],
5: [7],
6: [9, 10],
7: [8],
11: [3],
12: [15, 14, 13],
13: [17],
14: [17],
15: [12, 5, 8, 16],
17: [18]}
def BFS(v1, v2):
parsed = []
toParse = [v1]
current = v1
while len(toParse) > 0:
while current in parsed:
current = toParse.pop(0)
if current not in outb:
return False
if v2 in outb[current]:
return True
toParse += outb[current]
parsed.append(current)
return False
print(BFS(1, 18))
b3V0YiA9IHsxOiBbMl0sCiAgMjogWzQsIDVdLAogIDM6IFs1LCAxMSwgMTJdLAogIDQ6IFs2LCA3XSwKICA1OiBbN10sCiAgNjogWzksIDEwXSwKICA3OiBbOF0sCiAgMTE6IFszXSwKICAxMjogWzE1LCAxNCwgMTNdLAogIDEzOiBbMTddLAogIDE0OiBbMTddLAogIDE1OiBbMTIsIDUsIDgsIDE2XSwKICAxNzogWzE4XX0KCmRlZiBCRlModjEsIHYyKToKICAgIHBhcnNlZCA9IFtdCiAgICB0b1BhcnNlID0gW3YxXQogICAgY3VycmVudCA9IHYxCgogICAgd2hpbGUgbGVuKHRvUGFyc2UpID4gMDoKCiAgICAgICAgd2hpbGUgY3VycmVudCBpbiBwYXJzZWQ6CiAgICAgICAgICAgIGN1cnJlbnQgPSB0b1BhcnNlLnBvcCgwKQoKICAgICAgICBpZiBjdXJyZW50IG5vdCBpbiBvdXRiOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaWYgdjIgaW4gb3V0YltjdXJyZW50XToKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgdG9QYXJzZSArPSBvdXRiW2N1cnJlbnRdCiAgICAgICAgcGFyc2VkLmFwcGVuZChjdXJyZW50KQoKICAgIHJldHVybiBGYWxzZQoKcHJpbnQoQkZTKDEsIDE4KSk=