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

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

평형 상태

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

요약
고정점 좌표와 용수철 연결 및 탄성 계수로부터 평형 상태에서 물체들의 위치를 계산합니다.
난이도

보통10점 중 6점

유형
수학, 행렬
정답자
아직 제출이 없습니다

문제

물체 P에 작용하는 힘의 합이 0이면 P는 움직이지 않는다. 이때 P가 평형 상태에 있다고 한다.

물체 P에 작용하는 힘

그림 1. 물체 P에 작용하는 힘

그림 2와 같은 상황을 보자. x축 위에 고정점 F1과 F2가 있고, 물체 P가 스프링 S1과 S2로 연결되어 있다. S1은 F1과 P를 잇고, S2는 F2와 P를 잇는다. 두 스프링의 탄성계수를 각각 w1w_1, w2w_2라 하고, F1과 F2의 x좌표를 각각 x(F1)x(F_1), x(F2)x(F_2)라 하자. 후크 법칙에 따라 S1이 P에 가하는 힘은 w1×(x(P)−x(F1))w_1 \times (x(P) - x(F_1))이고, S2가 P에 가하는 힘은 w2×(x(P)−x(F2))w_2 \times (x(P) - x(F_2))이다. 여기서 x(P)x(P)는 P의 x좌표다.

평형 상태의 예

그림 2. 평형 상태의 예

예를 들어 그림 2에서 x(F1)=0x(F_1) = 0, x(F2)=7x(F_2) = 7, w1=3w_1 = 3, w2=4w_2 = 4이고 P가 평형 상태이면 P의 위치는 x(P)=4x(P) = 4로 정해진다.

이제 그림 3처럼 평면 위에서 여러 물체가 여러 스프링으로 연결된 상황을 생각하자. 고정점은 F1,…,FkF_1, \ldots, F_k의 kk개, 물체는 P1,…,PnP_1, \ldots, P_n의 nn개, 스프링은 S1,…,SmS_1, \ldots, S_m의 mm개이고 스프링 SiS_i의 탄성계수는 wiw_i다. 스프링 하나는 고정점과 물체를 잇거나 물체 두 개를 잇는다. 평면에서도 후크 법칙은 그대로 성립해서, 두 점 A와 B를 잇는 탄성계수 ww인 스프링이 A에 가하는 힘은 벡터 w×(A−B)w \times (A - B)이고 x성분과 y성분에 같은 식이 각각 적용된다. 모든 물체가 스프링 두 개 이상에 연결되어 있으면 물체는 결국 모두 평형 상태가 되며, 그때 각 물체의 위치가 하나로 정해진다.

kk개 고정점의 좌표, mm개 스프링의 탄성계수, 물체와 고정점의 연결 관계가 주어질 때 평형 상태에서 nn개 물체의 좌표를 구하는 프로그램을 작성하시오.

평면에서의 평형 상태 예

그림 3. 평면에서의 평형 상태 예

다음을 가정해도 된다.

  1. 모든 물체는 스프링 두 개 이상에 연결되어 있고, 물체와 고정점을 통틀어 어떤 두 점을 잡아도 스프링을 하나 이상 거쳐 이어져 있다.
  2. (물체, 물체) 한 쌍이나 (물체, 고정점) 한 쌍을 잇는 스프링은 많아야 하나다.
  3. 한 직선 위에 있지 않은 고정점이 세 개 이상 있다.
  4. 모든 물체가 평형 상태일 때 두 스프링이 서로 교차하지 않고, 두 물체가 같은 위치에 놓이지 않는다.
  5. 좌표가 같은 고정점은 없다.

입력

입력은 표준 입력으로 받는다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 kk (3≤k≤1003 \le k \le 100), mm (3≤m≤30003 \le m \le 3000), nn (1≤n≤10001 \le n \le 1000)이 공백으로 구분되어 주어진다. kk는 고정점의 개수, mm은 스프링의 개수, nn은 물체의 개수다.

이어지는 kk개 줄 중 ii번째 줄에는 고정점 FiF_i의 정수 좌표 xix_i, yiy_i (−10000≤xi,yi≤10000-10000 \le x_i, y_i \le 10000)가 주어진다.

이어지는 mm개 줄 중 ii번째 줄에는 세 정수 wiw_i, uiu_i, viv_i가 주어진다. wiw_i (1≤wi≤1001 \le w_i \le 100)는 스프링 SiS_i의 탄성계수이고, uiu_i와 viv_i는 SiS_i가 연결하는 두 끝점의 번호다. uiu_i가 음수이면 고정점 F−uiF_{-u_i} (1≤−ui≤k1 \le -u_i \le k)를 뜻하고, 양수이면 물체 PuiP_{u_i} (1≤ui≤n1 \le u_i \le n)를 뜻한다. viv_i도 같은 방식으로 읽는다.

출력

결과는 표준 출력으로 내보낸다. 테스트 케이스마다 먼저 Test case number : 뒤에 테스트 케이스 번호를 붙여 한 줄에 출력한다. 번호는 1부터 시작한다. 그다음 nn개 줄 중 ii번째 줄에 번호 ii와 물체 PiP_i의 좌표 xix_i, yiy_i를 공백 하나로 구분해 출력한다.

좌표는 소수점 셋째 자리에서 반올림해 소수점 아래 두 자리까지 출력한다. 반올림은 0에서 먼 쪽으로 하고, 반올림한 값이 0이면 부호를 붙이지 않고 0.00으로 출력한다. 정답 좌표의 정확한 값은 반올림 경계에서 10−610^{-6} 이상 떨어져 있으므로 출력할 문자열은 하나로 정해진다.

예제2

  1. 예제 1

    입력
    3
    4 5 2
    -2 7
    -6 2
    2 -5
    6 -1
    4 -1 1
    3 1 -2
    1 1 2
    2 2 -4
    5 2 -3
    5 9 4
    -81 67
    -4 67
    59 0
    -40 -68
    0 -65
    2 -1 1
    5 -2 2
    3 1 2
    1 1 3
    7 3 2
    4 2 -3
    8 4 3
    4 -4 4
    5 4 -5
    4 26 12
    -50 50
    -50 -50
    50 -50
    50 50
    11 -1 10
    14 -4 11
    12 -2 12
    12 -3 9
    13 10 1
    14 1 7
    11 7 11
    11 4 2
    13 2 3
    10 3 5
    11 12 6
    15 6 8
    12 8 9
    11 10 4
    13 1 2
    11 7 3
    15 11 5
    10 4 12
    14 2 6
    12 3 8
    14 5 9
    10 1 3
    12 7 5
    11 4 6
    11 3 6
    11 3 9
    
    예상 출력
    Test case number : 1
    1 -2.95 3.89
    2 2.38 -2.89
    Test case number : 2
    1 -25.05 30.11
    2 5.56 18.79
    3 -5.02 -9.75
    4 -11.77 -39.71
    Test case number : 3
    1 -0.60 5.21
    2 -1.74 -1.85
    3 7.33 -2.39
    4 -11.65 -2.98
    5 18.28 3.35
    6 -3.43 -7.02
    7 12.44 6.52
    8 7.37 -7.65
    9 20.92 -13.70
    10 -19.60 16.71
    11 27.77 20.55
    12 -22.86 -21.43
    
  2. 예제 2

    입력
    1
    3 3 1
    0 0
    6 0
    0 6
    1 -1 1
    1 -2 1
    1 -3 1
    
    예상 출력
    Test case number : 1
    1 2.00 2.00