У задачі потрібно знайти кількість різних пронумерованих дерев з вершинами. Або так само, потрібно знайти кількість остовних дерев у повному графі з вершинами.
Нагадаємо, що граф називається повним, якщо кожна пара його вершин з'єднана ребром
Теорема. Існує взаємно однозначна відповідність між остовними деревами повного графа з вершинами та кодами Прюфера довжиною n - 2.
Лема. Кількість різних кодів Прюфера довжини n - 2 дорівнює n^{n - 2}.
Отже, кількість різних малюнків, які може намалювати Аня (тобто кількість пронумерованих дерев з вершинами), дорівнює n^{n - 2}.
Приклад
Для n = 4 існує різних дерев. Під кожним деревом наведено відповідний код Прюфера.
Реалізація алгоритму
Читаємо кількість тестів .
scanf("%d",&tests);
for (t = 1; t <= tests; t++)
{Для кожного тесту читаємо значення .
scanf("%d",&n);Обчислюємо та виводимо значення n^{n - 2} за модулем .
res = 1;
for (i = 0; i < n - 2; i++)
res = (res * n) % 2000000011;
printf("Case #%d: %lld\n",t,res);
}