На столе выложили цепочку из костяшек по принципу домино. Под костяшкой понимается пара любых неотрицательных чисел, каждое не превышает
. В наборе могут быть одинаковые костяшки. Переставлять местами костяшки нельзя, но можно поворачивать любое количество костяшек, получая, например, из костяшки
—
костяшку
—
. Определите максимальную длину цепочки костяшек домино, которую можно получить с помощью переворачиваний. Под цепочкой понимается последовательность костяшек, в которой второе число первой костяшки не равно первому числу второй.
Входные данные
Дан входной файл, он содержит в первой строке количество пар (
). Каждая из следующих
строк содержит два натуральных числа, не превышающих
.
В ответе укажите одно число: искомое значение для файла.
file = open("domino.txt", "r")
n = int(file.readline())
current_dom = [int(s) for s in file.readline().split()]
prev_dom = current_dom.copy()
current_len = 1
current_len_reversed = 1
answer = 1
for i in range(1, n):
current_dom = [int(s) for s in file.readline().split()]
old_current_len = current_len
old_current_len_reversed = current_len_reversed
current_len, current_len_reversed = 1, 1
# Если начало текщей не совпадает с концом предыдущей
if (current_dom[0] != prev_dom[1]):
current_len = old_current_len + 1
# Если начало текущей не совпадает с началом предыдущей
if (current_dom[0] != prev_dom[0]):
current_len = max(current_len, old_current_len_reversed + 1)
# Если конец текущей не совпадает с концом предыдущей
if (current_dom[1] != prev_dom[1]):
current_len_reversed = old_current_len + 1
# Если конец текущей не совпадает с началом предыдущей
if (current_dom[1] != prev_dom[0]):
current_len_reversed = max(current_len_reversed, old_current_len_reversed + 1)
if current_len > answer:
answer = current_len
if current_len_reversed > answer:
answer = current_len_reversed
prev_dom = current_dom.copy()
file.close()
print(answer)