题库练习 Pattern Matching
← 上一题 下一题 →

A13977 | Pattern Matching

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

You are given $n$ patterns $p_1, p_2, \dots, p_n$ and $m$ strings $s_1, s_2, \dots, s_m$ . Each pattern $p_i$ consists of $k$ characters that are either lowercase Latin letters or wildcard characters (denoted by underscores). All patterns are pairwise distinct. Each string $s_j$ consists of $k$ lowercase Latin letters.

A string $a$ matches a pattern $b$ if for each $i$ from $1$ to $k$ either $b_i$ is a wildcard character or $b_i=a_i$ .

You are asked to rearrange the patterns in such a way that the first pattern the $j$ -th string matches is $p[mt_j]$ . You are allowed to leave the order of the patterns unchanged.

Can you perform such a rearrangement? If you can, then print any valid order.

输入格式

The first line contains three integers $n$ , $m$ and $k$ ( $1 \le n, m \le 10^5$ , $1 \le k \le 4$ ) — the number of patterns, the number of strings and the length of each pattern and string.

Each of the next $n$ lines contains a pattern — $k$ characters that are either lowercase Latin letters or underscores. All patterns are pairwise distinct.

Each of the next $m$ lines contains a string — $k$ lowercase Latin letters, and an integer $mt$ ( $1 \le mt \le n$ ) — the index of the first pattern the corresponding string should match.

输出格式

Print "NO" if there is no way to rearrange the patterns in such a way that the first pattern that the $j$ -th string matches is $p[mt_j]$ .

Otherwise, print "YES" in the first line. The second line should contain $n$ distinct integers from $1$ to $n$ — the order of the patterns. If there are multiple answers, print any of them.

输入输出样例

输入 #1
5 3 4
_b_d
__b_
aaaa
ab__
_bcd
abcd 4
abba 2
dbcd 5
输出 #1
YES
3 2 4 5 1
输入 #2
1 1 3
__c
cba 1
输出 #2
NO
输入 #3
2 2 2
a_
_b
ab 1
ab 2
输出 #3
NO
C++ 编辑器
输入
输出