시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 1024 MB181573925.658%

문제

$N$개의 정점을 가진 트리가 주어진다. 정점 $i$는 정점값 $a_i$를 가진다.

다음과 같은 쿼리가 총 $M$개 주어진다.

  • $x\,y\,z\,:$ 정점 $x$와 $y$를 잇는 단순 경로 상의 정점들의 값들을 각각 $z$와 XOR 연산을 시행한 값으로 바꾼다.

$M$개의 쿼리를 시행하고 난 후 새로운 수열 $b_i$를 다음과 같이 정의하자.

  • $b_i = $ 정점 $S$와 정점 $i$를 잇는 단순 경로 상의 정점들의 값들 중에 존재하지 않는 음이 아닌 정수 중 최솟값. $(1 \leq i \leq N)$

모든 $b_i$들을 구해보자.

입력

첫째 줄에 정수 $N$과 $S$가 공백으로 구분되어 주어진다. $(1 \leq N \leq 300\,000,1\leq S \leq N)$

둘째 줄에 정점들의 값인 정수로 이루어진 수열 $a_1, a_2, \cdots, a_N$이 공백으로 구분되어 주어진다. $(0\leq a_i \leq N)$

셋째 줄부터 $N-1$개의 줄에 걸쳐 트리의 간선을 나타내는 두 정수 $u,v$가 공백으로 구분되어 주어진다. 이는 정점 $u$와 정점 $v$를 잇는 간선을 의미한다. $(1\leq u,v\leq N)$

$N+2$번째 줄에 쿼리의 개수를 나타내는 정수 $M$이 주어진다. $(1\leq M \leq 300\,000)$

$N+3$번째 줄부터 $M$개의 줄에 걸쳐 쿼리를 나타내는 세 정수 $x,y,z$가 공백으로 구분되어 주어진다. $(1\leq x,y,z\leq N)$

출력

첫째 줄에 수열 $b_1,b_2,\cdots,b_N$을 공백으로 구분하여 출력한다.

예제 입력 1

3 1
0 3 2
1 2
1 3
2
1 2 2
1 3 2

예제 출력 1

1 2 1

출처

Camp > ICPC Sinchon Algorithm Camp > 2022 ICPC Sinchon Summer Algorithm Camp Contest > 중급 E번