Антон стажируется в группе обработки комментариев и отзывов. Для проверки гипотезы об автоматической генерации текстов Антон должен построить граф подстрок существующих текстов.
Антон берёт все имеющиеся у него слова и действует следующим образом:
- слово
$S=s_{1}s_{2} ... s_{n-1}s_{n}$ образует$n-2$ слова длины 3:$w_{1}=s_{1}s_{2}s_{3}$ ,$w_{2}=s_{2}s_{3}s_{4}$ ,$w_{3}=s_{3}s_{4}s_{5}$ $\ldots$ $w_{n-2}=s_{n-2}s_{n-1}s_{n}$ ; - если для какого-то из слов
$w_{i}$ еще нет вершины в графе, то она создается; - для каждой пары слов
$(w_{i},w_{i+1})$ добавляется ориентированное ребро веса 1, или увеличивается вес существующего ребра на 1.
Таким образом получается граф
По заданному набору слов помогите Антону найти количество вершин в графе и вывести ориентированные рёбра между вершинами.
В первой строке записано одно целое число
В каждой из
В первой строке выведите количество вершин
Во второй строке выведите количество пар вершин
В каждой из следующих
Рёбра вы можете перечислить в произвольном порядке.
Input:
2
aaaaaaaaaaaaa
aaabbbaaabbba
Output:
6
7
aaa aaa 10
aaa aab 2
aab abb 2
abb bbb 2
bbb bba 2
bba baa 1
baa aaa 1
Input:
2
abab
baba
Output:
2
2
aba bab 1
bab aba 1
Input:
1
qwertyqwertyqwertyqwertyqwerty
Output:
6
6
qwe wer 5
wer ert 5
ert rty 5
rty tyq 4
tyq yqw 4
yqw qwe 4
Tags: standard library, graph theory, strings