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

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

어색한 모임

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

요약
내부 친밀도의 최댓값이 외부와의 모든 친밀도보다 작은 부분집합 개수를 셉니다.
난이도

보통10점 중 7점

유형
최소 신장 트리, 유니온 파인드, 정렬
정답자
아직 제출이 없습니다

문제

작은 마을에 사는 사람 nn명이 공동체 PP를 이룬다. PP에 속한 두 사람은 서로 친할 수도 있고, 한 번도 만난 적이 없을 수도 있다. 서로 다른 두 사람 xx와 yy의 친밀도는 값 f(x,y)f(x,y)로 나타내며, f(x,y)=f(y,x)f(x,y) = f(y,x)이다.

PP의 부분집합 FF를 모임이라고 부른다. FF에 속한 사람 수를 ∣F∣|F|라고 하자. ∣F∣|F|가 nn도 아니고 11도 아니며, FF 안의 서로 다른 두 사람 사이의 친밀도 중 최댓값이 FF 안의 사람과 FF 밖의 사람 사이의 친밀도 중 최솟값보다 항상 작으면 FF를 어색한 모임이라고 한다. 즉 다음 두 조건을 모두 만족하는 FF가 어색한 모임이다.

1<∣F∣<n1 < |F| < n

max⁡{ f(x,y)∣x≠y, x∈F, y∈F }<min⁡{ f(x′,y′)∣x′∈F, y′∈P−F }\max\{\, f(x,y) \mid x \ne y,\ x \in F,\ y \in F \,\} < \min\{\, f(x',y') \mid x' \in F,\ y' \in P - F \,\}

서로 다른 두 사람의 친밀도가 모두 주어질 때, PP의 어색한 모임이 몇 개인지 세는 프로그램을 작성하시오.

예를 들어 공동체 PP에 xx, yy, zz 세 사람이 있다고 하자. 1<∣F∣<31 < |F| < 3을 만족하는 모임은 {x,y}\{x,y\}, {y,z}\{y,z\}, {z,x}\{z,x\} 세 가지다. 친밀도가 f(x,y)=8f(x,y) = 8, f(y,z)=3f(y,z) = 3, f(z,x)=5f(z,x) = 5로 주어지면 이 가운데 어색한 모임은 {y,z}\{y,z\} 하나뿐이므로 답은 11이다.

입력

입력은 표준 입력으로 받는다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 공동체 PP의 사람 수 nn이 주어진다 (1≤n≤10001 \le n \le 1000). 사람은 11번부터 nn번까지 번호로 구분한다. 이어지는 n−1n-1개의 줄에는 친밀도가 주어진다. ii번째 줄에는 n−in-i개의 정수 hi,i+1,hi,i+2,…,hi,nh_{i,i+1}, h_{i,i+2}, \dots, h_{i,n}이 공백 하나로 구분되어 주어진다. 여기서 hi,jh_{i,j}는 사람 ii와 사람 jj의 친밀도 f(i,j)f(i,j)이다 (1≤i<j≤n1 \le i < j \le n, 1≤hi,j≤1061 \le h_{i,j} \le 10^6).

출력

출력은 표준 출력으로 한다. 각 테스트 케이스마다 정확히 한 줄을 출력한다. 그 줄에는 PP의 어색한 모임의 개수를 출력한다.

예제2

  1. 예제 1

    입력
    3
    3
    8 5
    3
    4
    1 3 5
    6 4
    2
    5
    1 6 5 10
    7 8 9
    2 4
    3
    
    예상 출력
    1
    2
    3
    
  2. 예제 2

    입력
    2
    1
    2
    5
    
    예상 출력
    0
    0