아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

교수님은 기다리지 않는다

시간 제한2초메모리 제한256 MB

요약
샘플 간 무게 차이 측정과 질의를 처리하면서 가중 유니온파인드로 차이를 구하거나 알 수 없으면 UNKNOWN을 출력합니다.
난이도

보통10점 중 6점

유형
유니온 파인드, 그래프
정답자
아직 제출이 없습니다

문제

상근이는 매일 아침 실험실로 출근해 샘플의 무게를 잰다. 상근이는 두 샘플을 고른 뒤, 저울을 이용해 두 샘플의 무게 차이를 잰다.

교수님의 마음에 들기 위해 아침부터 부지런히 무게를 재지만, 가끔 교수님이 실험실에 들어와 어떤 두 샘플의 무게 차이를 물어보기도 한다. 이때 상근이는 지금까지 잰 결과를 바탕으로 대답할 수 있을 수도, 없을 수도 있다.

상근이는 출근한 첫날부터 모든 결과를 공책에 적어 두었다. 하지만 적어 둔 양이 너무 많아 교수님의 질문에 빠르게 대답하지 못했다. 이런 상근이를 돕는 프로그램을 만들자.

상근이가 실험실에서 한 일이 순서대로 주어진다. 교수님의 각 질문에 대해, 두 샘플의 무게 차이를 알아낼 수 있는지 판단하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스의 첫째 줄에는 샘플 종류의 개수 NN (2≤N≤100,0002 \le N \le 100{,}000)과 상근이가 실험실에서 한 일의 수 MM (1≤M≤100,0001 \le M \le 100{,}000)이 주어진다. 샘플은 11번부터 NN번까지 번호가 매겨져 있다. 다음 MM개의 줄에는 상근이가 한 일이 주어진다.

무게를 잰 경우 ! a b w 형식으로 주어지며, 이는 샘플 bb가 샘플 aa보다 ww그램 무겁다는 뜻이다 (a≠ba \ne b). ww는 1,000,0001{,}000{,}000을 넘지 않는 음이 아닌 정수이다. 모든 측정은 정확하며 서로 일관적이다.

교수님의 질문은 ? a b 형식으로 주어지며, bb가 aa보다 얼마나 무거운지를 출력하라는 뜻이다.

마지막 줄에는 00이 두 개 주어진다.

출력

교수님의 질문 ? a b가 주어질 때마다, 지금까지 측정한 결과로 aa와 bb의 무게 차이를 계산할 수 있으면 bb가 aa보다 얼마나 무거운지를 출력한다. 이 차이의 절댓값은 1,000,0001{,}000{,}000을 넘지 않는다. 측정한 결과로 무게 차이를 계산할 수 없으면 UNKNOWN을 출력한다.

예제3

  1. 예제 1

    입력
    2 2
    ! 1 2 1
    ? 1 2
    2 2
    ! 1 2 1
    ? 2 1
    4 7
    ! 1 2 100
    ? 2 3
    ! 2 3 100
    ? 2 3
    ? 1 3
    ! 4 3 150
    ? 4 1
    0 0
    
    예상 출력
    1
    -1
    UNKNOWN
    100
    200
    -50
    
  2. 예제 2

    입력
    5 7
    ! 1 2 3
    ! 2 3 5
    ! 4 5 2
    ? 1 3
    ? 3 1
    ? 1 4
    ? 4 5
    0 0
    
    예상 출력
    8
    -8
    UNKNOWN
    2
    
  3. 예제 3

    입력
    3 3
    ! 1 2 0
    ? 1 2
    ? 3 3
    0 0
    
    예상 출력
    0
    0