Codeforces Round 581 (Div. 2) |
---|
Закончено |
Главные герои были опущены для краткости.
Вам дан ориентированный невзвешенный граф без петель с $$$n$$$ вершинами и путь в нём (не обязательно простой), заданный последовательностью $$$p_1, p_2, \ldots, p_m$$$ из $$$m$$$ вершин; для любого $$$1 \leq i < m$$$ существует дуга из $$$p_i$$$ в $$$p_{i+1}$$$.
Будем называть последовательность $$$v_1, v_2, \ldots, v_k$$$ из $$$k$$$ вершин хорошей, если $$$v$$$ является подпоследовательностью $$$p$$$, $$$v_1 = p_1$$$, $$$v_k = p_m$$$, и $$$p$$$ является одним из кратчайших путей, проходящих через вершины $$$v_1$$$, $$$\ldots$$$, $$$v_k$$$ в этом порядке.
Последовательность $$$a$$$ является подпоследовательностью $$$b$$$, если $$$a$$$ может быть получена из $$$b$$$ удалением нескольких (возможно, ни одного или всех) элементов. Очевидно, что последовательность $$$p$$$ является хорошей, но вам предстоит найти кратчайшую хорошую подпоследовательность.
Если существует несколько кратчайших хороших подпоследовательностей, выведите любую.
Первая строка содержит одно целое число $$$n$$$ ($$$2 \le n \le 100$$$) — количество вершин в графе.
Следующие $$$n$$$ строк задают граф матрицей смежности: $$$j$$$-й символ в $$$i$$$-й строке равен $$$1$$$, если есть дуга из вершины $$$i$$$ в вершину $$$j$$$, иначе равен $$$0$$$. Гарантируется, что заданный граф не имеет петель.
Следующая строка содержит одно целое число $$$m$$$ ($$$2 \le m \le 10^6$$$) — количество вершин в выбранном пути.
Следующая строка содержит $$$m$$$ целых чисел $$$p_1, p_2, \ldots, p_m$$$ ($$$1 \le p_i \le n$$$) — вершины в пути. Гарантируется, что для любого $$$1 \leq i < m$$$ существует дуга из $$$p_i$$$ в $$$p_{i+1}$$$.
В первой строке выведите одно число $$$k$$$ ($$$2 \leq k \leq m$$$) — длину кратчайшей хорошей подпоследовательности. Во второй строке выведите $$$k$$$ целых чисел $$$v_1$$$, $$$\ldots$$$, $$$v_k$$$ ($$$1 \leq v_i \leq n$$$) — вершины в подпоследовательности. Если существует несколько кратчайших хороших подпоследовательностей, выведите любую. Любые два последовательные числа должны быть различны.
4 0110 0010 0001 1000 4 1 2 3 4
3 1 2 4
4 0110 0010 1001 1000 20 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
11 1 2 4 2 4 2 4 2 4 2 4
3 011 101 110 7 1 2 3 1 3 2 1
7 1 2 3 1 3 2 1
4 0110 0001 0001 1000 3 1 2 4
2 1 4
На рисунке представлен граф для первого примера:
Заданный путь проходит через вершины $$$1$$$, $$$2$$$, $$$3$$$, $$$4$$$. Последовательность $$$1-2-4$$$ является хорошей, т.к. она является подпоследовательностью заданного пути, её первый и последний элементы совпадают с первым и последним элементом заданного пути, и кратчайший путь, проходящий через вершины $$$1$$$, $$$2$$$ и $$$4$$$ в этом порядке, это $$$1-2-3-4$$$. Обратите внимание, что последовательности $$$1-4$$$ и $$$1-3-4$$$ не подходят, т. к. в обоих случаях кратчайший путь, проходящий через вершины этих последовательностей, это $$$1-3-4$$$.
В третьем примере граф является полным, поэтому любая последовательность вершин, в которой любые два последовательных элемента различны, задаёт путь из такого же количества вершин.
В четвёртом примере пути $$$1-2-4$$$ и $$$1-3-4$$$ являются кратчайшими путями, проходящими через вершины $$$1$$$ и $$$4$$$.
Название |
---|