美丽路径
时间限制:1秒 内存限制:256M
【题目描述】
著名的转转山风景区有\(N\)个景点和\(M\)条双向小路,它们构成了一张无权的连通无向图\((2≤N≤2*10^5,N-1≤M≤2*10^5)\)。小H开始在游客中心,即景点1。
初始时,景点 \(s_1,s_2,…,s_K\) 里有美丽的荷花池,而景点 \(d_1,d_2, …,d_L\) 是目标景点。当一条路径为美丽的,需要满足如下条件:
◆起点是游客中心 1。
◆终点是某个目标景点 \(x\)。
◆不存在从景点 1 到景点 \(x\) 的更短路径。
◆小H 沿途访问了所有荷花池。
小H有一种特殊魔法,那就是可以挥动他的魔杖,使得最多再有一个景点(如果原本没有)变成荷花池。然而,小H并不是很果断。对于编号从 \(2\) 到 \(N\) 的景点 \(f\),在小H临时让景点f变成荷花池后,判断是否存在一条美丽的路径。
【输入格式】
第一行包含 \(T(1≤T≤100)\),表示独立测试数据的数量。
每个测试数据的第一行包含 \(N、M、K\) 和 \(L(0≤K≤N-1,1≤L≤N-1)\)。
接下来的一行包含 \(s_1,s_2,…,s_K\)(\(2≤s_i≤N\),所 \(s_i\) 互不相同)。
接下来的一行包含 \(d_1,d_2, …,d_L\)(\(2≤d_i≤N\),所有 \(d_i\) 互不相同)。
接下来的M行每行包含 \(u\) 和 \(v\),表示游客中心 \(u\) 和 \(v\) 之间有一条无向边。所有边的长度视为相等。保证没有重边或自环。
保证所有测试用例的N之和以及M之和均不超过106。
【输出格式】
对于每个测试数据,输出一个长度为 \(N-1\) 的二进制字符串。字符串的第 \(i\) 个字符应为 1,如果对于第 \(i+1\) 号景点的答案为真(即存在美丽路径)。
【输入输出样例1】
Input
1
7 7 0 1
5
1 2
2 3
3 4
4 5
5 6
6 7
3 6
Output
111110
【样例1说明】
由于5是唯一的目标景点,如果第i号景点位于从1到5的任意一条最短路径上,则答案为真。
从1到5有两条最短路径,分别是1→2→3→4→5 和 1→2→3→6→5。
由于原本没有景点包含荷花池,因此对于游客中心i,如果它位于上述两条路径中的至少一条上,则答案为真。
【输入输出样例2】
Input
1
6 6 0 2
5 3
1 2
2 3
3 4
4 5
5 6
2 5
Output
11010
【样例2说明】
有两个目标景点:5和3。由于原本没有景点包含荷花池,第i号景点必须位于到5或3的最短路径上。因为游客中心2位于到游客中心5 的一条最短路径上,所以对于游客中心2 答案为真。显然,游客中心3 位于到游客中心3 的最短路径上,游客中心5 位于到游客中心5 的最短路径上。
【输入输出样例2】
Input
3
4 3 2 1
2 3
4
1 2
2 3
3 4
4 4 2 1
2 3
4
1 2
1 3
2 4
3 4
5 5 2 1
2 4
5
1 2
1 3
2 4
3 4
4 5
Output
111
000
1011
【样例2说明】
对于第一个测试数据,如果小H 能在某条到游客中心4 的最短路径上依次经过游客中心i、游客中心2 和游客中心3(顺序不限),则对于第 i号景点答案为真。可以证明,对于所有景点答案均为真。
【测试点性质】
- 输入 4-6:\(K=0\) 且 \(L=1\)
- 输入 7-9:\(K=0\)
- 输入 10-23:无额外限制。
【来源】
Mr.he