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

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

남극 탐험

시간 제한30초메모리 제한512 MB

요약
다리 추가와 펭귄 수 갱신이 섞여 들어오는 숲에서 두 섬의 연결 여부와 경로 위 펭귄 수 합을 구한다.
난이도

보통10점 중 7점

유형
유니온 파인드, 트리, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

상근이는 여행사 "얼음을 꿈꾸다"의 사장이다. 이 여행사는 남극 근처의 섬 NN개를 사서 당일치기 여행 상품을 운영한다. 관광객에게 가장 인기 있는 동물은 황제펭귄이고, 섬에서 쉽게 볼 수 있다.

여행사가 인기를 얻으면서 보트로 관광객을 옮기는 방식은 더 이상 효율적이지 않게 되었다. 상근이는 섬 사이에 다리를 놓고 관광객을 버스로 이동시키려 한다. 다리를 놓는 과정은 컴퓨터 프로그램으로 관리한다.

섬에는 11번부터 NN번까지 번호가 붙어 있다. 처음에는 다리가 하나도 없고, 각 섬에 사는 펭귄의 수도 모두 알고 있다. 펭귄의 수는 바뀔 수 있지만 항상 00 이상 10001000 이하다.

상근이의 프로그램은 다음 세 가지 명령을 수행할 수 있어야 한다.

  • bridge A B: 섬 AA와 BB 사이에 다리를 놓는 명령이다. (AA와 BB는 다르다) 지금까지 놓인 다리만으로는 AA에서 BB로 갈 수 없을 때에만 다리를 놓아야 한다. 다리를 놓아야 하면 yes, 이미 갈 수 있어서 놓을 필요가 없으면 no를 출력한다.
  • penguins A X: 섬 AA에 사는 펭귄의 수를 다시 세어 보니 XX마리가 되었다는 명령이다. 아무것도 출력하지 않는다.
  • excursion A B: 관광객이 섬 AA에서 시작해 BB에서 끝나는 경로로 여행하는 명령이다. AA에서 BB로 갈 수 있으면 이동하는 섬에 있는 모든 펭귄의 수를 구해 출력한다. (AA와 BB도 포함한다) 갈 수 없으면 impossible을 출력한다.

상근이의 프로그램을 작성하시오.

bridge와 excursion 명령에 대한 답을 출력하기 전에는 다음 명령이 주어지지 않는다. 따라서 출력한 뒤에는 표준 출력 버퍼를 flush해야 한다.

입력

첫째 줄에 섬의 수 NN (1≤N≤30,0001 \le N \le 30,000)이 주어진다.

둘째 줄에 각 섬에 있는 펭귄의 수가 주어진다.

셋째 줄에 명령의 개수 QQ (1≤Q≤300,0001 \le Q \le 300,000)가 주어진다.

다음 QQ개 줄에 문제에서 주어진 명령 중 하나가 주어진다.

출력

bridge나 excursion 명령이 주어질 때마다 출력한다.

예제2

  1. 예제 1

    입력
    5
    4 2 4 5 6
    10
    excursion 1 1
    excursion 1 2
    bridge 1 2
    excursion 1 2
    bridge 3 4
    bridge 3 5
    excursion 4 5
    bridge 1 3
    excursion 2 4
    excursion 2 5
    
    예상 출력
    4
    impossible
    yes
    6
    yes
    yes
    15
    yes
    15
    16
    
  2. 예제 2

    입력
    6
    1 2 3 4 5 6
    10
    bridge 1 2
    bridge 2 3
    bridge 4 5
    excursion 1 3
    excursion 1 5
    bridge 3 4
    excursion 1 5
    penguins 3 10
    excursion 1 3
    bridge 1 5
    
    예상 출력
    yes
    yes
    yes
    6
    impossible
    yes
    15
    13
    no