RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00042

경로 XOR 최댓값

Diamond V 다이아몬드 V
난이도
1s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 0

설명

\(N\)개의 정점으로 이루어진 트리가 주어진다.

각 정점 \(i\)에는 정수 \(A_i\)가 적혀 있다.

\(Q\)개의 질의가 주어진다.
각 질의는 세 정수 \(u, v, x\)로 이루어진다.

정점 \(u\)에서 정점 \(v\)로 가는 단순 경로 위에 있는 정점들 중 하나를 골라 그 정점에 적힌 값 \(A_i\)\(x\)의 XOR 값을 계산한다.

즉, 경로 위 정점 \(i\)에 대해 다음 값을 생각한다.

\(A_i \oplus x\)

각 질의마다 이 값의 최댓값을 출력하시오.

제약

\(1 ≤ N ≤ 200\,000\)
\(1 ≤ Q ≤ 200\,000\)
\(0 ≤ A_i < 2^{30}\)
\(1 ≤ u, v ≤ N\)
\(0 ≤ x < 2^{30}\)
주어지는 그래프는 트리이다.

입력 형식

첫째 줄에 정점의 개수 \(N\)과 질의의 개수 \(Q\)가 주어진다.

둘째 줄에 \(N\)개의 정수 \(A_1, A_2, \dots, A_N\)이 공백으로 구분되어 주어진다.

셋째 줄부터 \(N-1\)개의 줄에 걸쳐 트리의 간선 정보 \(a\) \(b\)가 주어진다.

그 다음 줄부터 \(Q\)개의 줄에 걸쳐 질의 \(u\) \(v\) \(x\)가 주어진다.

출력 형식

각 질의마다 정점 \(u\)에서 정점 \(v\)로 가는 경로 위 정점 값들 중 \(x\)와 XOR 했을 때의 최댓값을 한 줄에 하나씩 출력한다.

예제 1
입력
5 4
1 7 3 10 5
1 2
1 3
2 4
2 5
4 5 6
3 4 2
1 1 8
3 5 7
출력
12
8
9
4
설명

예제 설명

첫 번째 질의 4 5 6에서 경로는 다음과 같다.

4 → 2 → 5

경로 위 정점 값은 다음과 같다.

10, 7, 5

각각 6과 XOR 하면 다음과 같다.

10 xor 6 = 12
7 xor 6 = 1
5 xor 6 = 3

따라서 답은 12이다.

문제 정보

anthony0506 작성

출처 anthony0506

평가 및 의견

경로 XOR 최댓값

개요
출제자 난이도 Diamond V 다이아몬드 V 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

경로 XOR 최댓값

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8