306483: CF1204C. Anna, Svyatoslav and Maps
Memory Limit:256 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Anna, Svyatoslav and Maps
题意翻译
对于$n(n \leqslant 100)$个点有向无环图,给出一个由$m(m \leqslant 10^6)$个点组成的的路径$p$(不保证是简单路径,但保证对于$1 \leqslant i < m,p_i$与$p_{i+1}$之间有变), 要求从$p$中选出一个最短的子序列$v$(假设长度为$k$),满足$v_1=p_1,v_k=p_m$,并且$p$是按顺序经过$v$的最短路径之一题目描述
The main characters have been omitted to be short. You are given a directed unweighted graph without loops with $ n $ vertexes and a path in it (that path is not necessary simple) given by a sequence $ p_1, p_2, \ldots, p_m $ of $ m $ vertexes; for each $ 1 \leq i < m $ there is an arc from $ p_i $ to $ p_{i+1} $ . Define the sequence $ v_1, v_2, \ldots, v_k $ of $ k $ vertexes as good, if $ v $ is a subsequence of $ p $ , $ v_1 = p_1 $ , $ v_k = p_m $ , and $ p $ is one of the shortest paths passing through the vertexes $ v_1 $ , $ \ldots $ , $ v_k $ in that order. A sequence $ a $ is a subsequence of a sequence $ b $ if $ a $ can be obtained from $ b $ by deletion of several (possibly, zero or all) elements. It is obvious that the sequence $ p $ is good but your task is to find the shortest good subsequence. If there are multiple shortest good subsequences, output any of them.输入输出格式
输入格式
The first line contains a single integer $ n $ ( $ 2 \le n \le 100 $ ) — the number of vertexes in a graph. The next $ n $ lines define the graph by an adjacency matrix: the $ j $ -th character in the $ i $ -st line is equal to $ 1 $ if there is an arc from vertex $ i $ to the vertex $ j $ else it is equal to $ 0 $ . It is guaranteed that the graph doesn't contain loops. The next line contains a single integer $ m $ ( $ 2 \le m \le 10^6 $ ) — the number of vertexes in the path. The next line contains $ m $ integers $ p_1, p_2, \ldots, p_m $ ( $ 1 \le p_i \le n $ ) — the sequence of vertexes in the path. It is guaranteed that for any $ 1 \leq i < m $ there is an arc from $ p_i $ to $ p_{i+1} $ .
输出格式
In the first line output a single integer $ k $ ( $ 2 \leq k \leq m $ ) — the length of the shortest good subsequence. In the second line output $ k $ integers $ v_1 $ , $ \ldots $ , $ v_k $ ( $ 1 \leq v_i \leq n $ ) — the vertexes in the subsequence. If there are multiple shortest subsequences, print any. Any two consecutive numbers should be distinct.
输入输出样例
输入样例 #1
4
0110
0010
0001
1000
4
1 2 3 4
输出样例 #1
3
1 2 4
输入样例 #2
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
输出样例 #2
11
1 2 4 2 4 2 4 2 4 2 4
输入样例 #3
3
011
101
110
7
1 2 3 1 3 2 1
输出样例 #3
7
1 2 3 1 3 2 1
输入样例 #4
4
0110
0001
0001
1000
3
1 2 4
输出样例 #4
2
1 4