SOJ ONLINE JUDGE

문제 110

값 차이 관계 관리하기

내 상태
미제출
난이도
110번 문제 난이도 보기
Gold I
출제자
rlatjwls7882
시간 제한
1000 ms
메모리 제한
1024 MB
110번 문제 태그 보기
구현

$N$개의 정수 변수 $A_0,A_1,\cdots,A_{N-1}$이 있다. 처음에는 변수 사이의 관계가 알려져 있지 않다. 다음 $Q$개의 연산을 순서대로 처리해 보자.

  • $0\ u\ v\ w$: $A_v-A_u=w$라는 관계를 추가한다. 기존 관계와 모순이면 새 관계만 거절한다.
  • $1\ u\ v$: 받아들인 관계로 $A_v-A_u$를 결정할 수 있다면 그 값을 구한다.
  • $2\ u\ v$: 받아들인 관계로 $A_v-A_u$를 결정할 수 있는지 판별한다.
  • $3\ u$: 받아들인 관계로 $A_v-A_u$를 결정할 수 있는 변수 $A_v$의 개수를 구한다.

변수 자체의 값에는 제한이 없다. $3$번 연산에서는 $A_u$도 센다. $u=v$인 관계나 중복된 관계도 주어질 수 있다.

입력

첫 번째 줄에 두 정수 $N$, $Q$가 공백으로 구분되어 주어진다. $(1 \le N, Q \le 200\,000)$

두 번째 줄부터 $Q$개의 줄에 걸쳐 본문에서 설명한 형식의 연산이 주어진다. 각 연산의 정수는 공백으로 구분되어 주어진다. $(0 \le u, v < N; -10^9 \le w \le 10^9)$

출력

각 연산의 답을 연산이 주어진 순서대로 한 줄에 하나씩 출력한다.

  • $0$번 연산: 관계를 받아들였다면 $1$을, 거절했다면 $0$을 출력한다.
  • $1$번 연산: $A_v-A_u$를 결정할 수 있다면 그 값을, 그렇지 않다면 UNKNOWN을 출력한다.
  • $2$번 연산: $A_v-A_u$를 결정할 수 있다면 $1$을, 그렇지 않다면 $0$을 출력한다.
  • $3$번 연산: 구한 변수의 개수를 출력한다.

예제 입력 1

5 13
1 0 4
0 0 1 3
0 1 2 -5
1 0 2
0 0 2 -1
1 0 2
2 0 3
3 1
0 3 4 0
0 2 3 7
1 4 0
2 0 4
3 4

예제 출력 1

UNKNOWN
1
1
-2
0
-2
0
3
1
1
-5
1
5

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.