def is_full_substring(to_check, expected_lenght):
index = 0
for item in to_check:
if item == '1':
break
index += 1
is_full = True
for j in range(expected_lenght):
if to_check[index + j] == '0':
is_full = False
break
return is_full
params = input().split()
n = int(params[0])
m = int(params[1])
orders = []
for item in range(m):
new_order = input().split()
arg_1 = int(new_order[0])
arg_2 = int(new_order[1])
orders.append([arg_1,arg_2])
combos = dict(zip(range(n), [None]*int(n+1)))
for item in range(n+1):
combos[item] = []
for i in range(1 << n):
# Convert the current number to a binary string of length n
binary_str = format(i, '0' + str(n) + 'b')
ones = binary_str.count('1')
combos[ones].append(binary_str)
del combos[0]
result = ''
for d in combos:
how_many_combos = 0
for i in range(len(combos[d])):
for order in orders:
first = int(order[0] - 1)
second = int(order[1] - 1)
if combos[d][i][first] == '1' and combos[d][i][second] == '0':
new_item = list(combos[d][i])
new_item[first] = '0'
new_item[second] = '1'
combos[d][i] = ''.join(new_item)
if is_full_substring(combos[d][i],d) == True:
how_many_combos += 1
result += ' ' + str(how_many_combos % 2)
print(result[1:])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | def is_full_substring(to_check, expected_lenght): index = 0 for item in to_check: if item == '1': break index += 1 is_full = True for j in range(expected_lenght): if to_check[index + j] == '0': is_full = False break return is_full params = input().split() n = int(params[0]) m = int(params[1]) orders = [] for item in range(m): new_order = input().split() arg_1 = int(new_order[0]) arg_2 = int(new_order[1]) orders.append([arg_1,arg_2]) combos = dict(zip(range(n), [None]*int(n+1))) for item in range(n+1): combos[item] = [] for i in range(1 << n): # Convert the current number to a binary string of length n binary_str = format(i, '0' + str(n) + 'b') ones = binary_str.count('1') combos[ones].append(binary_str) del combos[0] result = '' for d in combos: how_many_combos = 0 for i in range(len(combos[d])): for order in orders: first = int(order[0] - 1) second = int(order[1] - 1) if combos[d][i][first] == '1' and combos[d][i][second] == '0': new_item = list(combos[d][i]) new_item[first] = '0' new_item[second] = '1' combos[d][i] = ''.join(new_item) if is_full_substring(combos[d][i],d) == True: how_many_combos += 1 result += ' ' + str(how_many_combos % 2) print(result[1:]) |
English