Ви можете знати математика фон Коха за його знаменитою сніжинкою. Однак у нього рукави цікавіші з інформатики. Дійсно, давайте розглянемо цю гіпотезу:
Дано дерево з n
вузлами (таким чином, n-1
краї). Знайдіть спосіб перерахувати вузли від 1
до n
і, відповідно, ребра від 1
до n-1
таким чином, що для кожного краю k
різниця його номерів вузлів дорівнює k
. Припущення полягає в тому, що це завжди можливо.
Ось приклад, щоб зробити це абсолютно зрозумілим:
ВАШ ЗАВДАННЯ
Ваш код прийме дерево як введення, ви можете прийняти потрібний формат, але для тестових випадків я надам дерево їх дугами та списком їх вузлів.
Наприклад, це вхід для дерева на малюнку:
[a,b,c,d,e,f,g]
d -> a
a -> b
a -> g
b -> c
b -> e
e -> f
Ваш код повинен повертати дерево з вузлами та краями, пронумерованими. Ви можете повернути більш графічний вихід, але я надаю такий вид випуску для тестових випадків:
[a7,b3,c6,d1,e5,f4,g2]
d -> a 6
a -> b 4
a -> g 5
b -> c 3
b -> e 2
e -> f 1
ТЕСТОВІ СЛУЧАИ
[a,b,c,d,e,f,g] [a7,b3,c6,d1,e5,f4,g2]
d -> a d -> a 6
a -> b a -> b 4
a -> g => a -> g 5
b -> c b -> c 3
b -> e b -> e 2
e -> f e -> f 1
[a,b,c,d] [a4,b1,c3,d2]
a -> b a -> b 3
b -> c => b -> c 2
b -> d b -> d 1
[a,b,c,d,e] [a2,b3,c1,d4,e5]
a -> b a -> b 1
b -> c b -> c 2
c -> d => c -> d 3
c -> e c -> e 4
Це код-гольф, це найкоротша відповідь у виграші байтів!
Примітка. Це сильніше, ніж гіпотеза Рінгеля-Котцига , яка стверджує, що кожне дерево має витончене маркування. Оскільки в гіпотезі Коха не можна пропустити цілі числа для маркування, що суперечить витонченому маркуванню в гіпотезі Рінгеля-Котцига. Витончена маркування була запропонована до тут .