eolymp
bolt
Try our new interface for solving problems
Problems

Строки в дереве

Строки в дереве

Дано дерево. Дерево - это связный граф без циклов. На каждом ребре дерева написана строчная латинская буква. Между каждыми двумя вершинами существует ровно один простой путь, то есть путь по рёбрам дерева, проходящий через каждую вершину не более одного раза. Каждому пути соответствует строка, которая получается, если идти по этому пути и читать буквы на рёбрах в пути её следования. Путь можно проходить начиная с любого его конца. Также дана строка \textbf{S}. Соответствует ли она какому-либо простому пути в данном дереве? Длина строки и размер дерева не превышают \textbf{3·10^5}. \InputFile Первая строка содержит заданную строку \textbf{s}. Следующая строка содержит количество вершин в дереве \textbf{n}. Следующие \textbf{n-1} строк описывают рёбра дерева в виде \textbf{u}, \textbf{v}, \textbf{c}, где \textbf{u} и \textbf{v} - вершины дерева, а \textbf{c} - символ, написанный на ребре. \OutputFile В первой строке выведите \textbf{YES}, если такой путь существует, и \textbf{NO} в противном случае. Если путь существует, то выведите пару вершин, путь между которыми образует заданную строку.
Time limit 4 seconds
Memory limit 256 MiB
Input example #1
abc
4
1 2 c
4 3 a
2 4 b
Output example #1
YES
1 3