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

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

비

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

요약
삼각분할된 지형의 점 높이가 주어질 때, 비가 내린 뒤 생기는 호수의 개수와 각 호수가 채워지는 최대 수위를 오름차순으로 출력합니다.
난이도

보통10점 중 7점

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

문제

최근 몇 년 동안 허리케인과 쓰나미는 물의 파괴력을 보여 주었다. 그 힘은 바다에만 머물지 않는다. 폭우는 홍수를 일으켜 집과 농지를 망가뜨릴 수 있다. 과학자들은 정교한 모델을 사용해 큰비가 내렸을 때 물이 어디에 고일지 예측한다.

언덕이 많은 지형은 삼각분할로 모델링할 수 있다. 삼각분할은 삼각형으로 곡면을 근사하는 방법이다. 삼각형의 변은 인접한 두 삼각형이 함께 공유한다. 다만 영역의 경계에 있는 삼각형은 공유되지 않는 변을 가질 수 있다.

지형의 삼각분할 모델이 주어졌다고 하자. 비가 쏟아지면 일부 물은 바다로 흘러가고, 나머지는 지형에 갇혀 호수를 이룬다. 이때 생기는 호수의 개수와 각 호수의 수위를 구하라. 비는 모든 호수를 최대 수위까지 채울 만큼 충분히 내린다고 가정한다.

호수의 수면 위에서 경계를 제외한 두 점 사이는 아무리 작아도 0이 아닌 크기의 배로 항해할 수 있다. 따라서 깊이가 0인 점만 공유하는 두 호수는 서로 다른 호수이다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 점의 개수 p≥3p \ge 3과 변의 개수 s≥3s \ge 3이 주어진다. 이어지는 pp개의 줄은 각각 점을 설명한다. 각 줄은 테스트 케이스 안에서 유일한 두 글자 코드로 시작하고, 그 뒤에 정수 xx, yy, hh가 차례로 주어진다. 여기서 −10000≤x,y≤10000-10000 \le x, y \le 10000은 평면 좌표이고, 0≤h≤88480 \le h \le 8848은 해수면 위의 높이이다.

이어지는 ss개의 줄은 변 하나를 설명한다. 변은 서로 다른 두 글자 코드로 된 두 끝점으로 주어진다. 변을 xy 평면에 투영한 결과는 다음 조건을 만족한다.

  • 어떤 변도 자신의 끝점 이외의 곳에서 다른 변과 교차하지 않는다.
  • 점과 변은 하나의 연결된 영역을 이루는 삼각분할을 만든다.
  • 영역 안에 구멍이 없다. 즉 경계는 하나의 닫힌 다각선이다.

영역 밖의 점은 경계에서 가장 가까운 점보다 낮다고 본다. 따라서 물이 경계에 닿으면 자유롭게 밖으로 흘러나간다.

입력의 마지막 줄에는 0 0이 주어진다.

출력

각 테스트 케이스마다 케이스 번호를 출력하고, 영역 안에 생기는 서로 다른 모든 호수의 수위를 한 줄에 하나씩 비내림차순으로 출력한다. 수위는 해수면 위의 높이이다. 호수가 없으면 0을 한 줄에 출력한다. 출력 형식을 정확히 따른다.

예제1

  1. 예제 1

    입력
    3 3
    AA 0 0 0
    BB 0 1 0
    CC 1 0 0
    AA BB
    AA CC
    BB CC
    7 12
    aa 1 1 5
    bb 1 3 5
    xX 0 2 10
    XY 0 4 15
    XZ 3 4 11
    xy 0 0 15
    xz 3 0 15
    xX XZ
    XY XZ
    xX XY
    xX xy
    xX xz
    xz xy
    aa xX
    aa xy
    aa xz
    bb xX
    bb XY
    bb XZ
    0 0 
    
    예상 출력
    Case 1:
      0
    Case 2:
      10
      10