问题描述
给定一个简单的连通无向图G,其中有N个顶点和M条边。
图G的顶点编号为1,顶点2,…,顶点N,其边编号为边1,边2,…,边M。边i连接顶点Ui和顶点Vi。
还给定了边的子集:S=x1,x2,ldots,xK。
确定是否存在一条在G上的路径,使得对于所有xinS,边x恰好出现一次。
该路径可以包含任意次数(可能为零)的不在S中的边。
什么是路径?在无向图G上的路径是由k个顶点(k是一个正整数)和(k−1)条边交替出现的序列,v1,e1,v2,…,vk−1,ek−1,vk,其中边ei连接顶点vi和顶点vi+1。该序列可以包含多次相同的边或顶点。当且仅当存在恰好一个1leqileqk−1使得ei=x时,称路径恰好包含边x一次。
约束条件
- 2leqNleq2times105
- $N-1 \\leq M \\leq \\min(\\frac{N(N-1)}{2},2\\times 10^5)$
- 1leqUi<VileqN
- 如果ineqj,则(Ui,Vi)neq(Uj,Vj)。
- G是连通的。
- 1leqKleqM
- 1leqx1<x2<cdots<xKleqM
- 输入中所有的值都是整数。
输入
输入以以下格式从标准输入给出:
N M
U1 V1
U2 V2
vdots
UM VM
K
x1 x2 ldots xK
输出
如果存在满足问题描述中条件的路径,则输出Yes
;否则输出No
。
示例输入 1
6 6
1 3
2 3
3 4
4 5
4 6
5 6
4
1 2 4 5
示例输出 1
Yes
路径$(v_1,e_1,v_3,e_3,v_4,e_4,v_5,e_6,v_6,e_5,v_4,e_3,v_3,e_2,v_2)$满足条件,其中vi表示顶点i,ei表示边i。
换句话说,路径按照1to3to4to5to6to4to3to2的顺序遍历图G上的顶点。
该路径满足条件,因为它恰好包含边1,2,4和5各一次。
示例输入 2
6 5
1 2
1 3
1 4
1 5
1 6
3
1 2 3
示例输出 2
No
不存在同时包含边1,2和3各一次的路径,因此应输出No
。