숲 만들기
시간 제한2초메모리 제한512 MB
가중치가 서로 다른 N개의 튜플 (u,v,w)가 주어질 때, 각 튜플을 부모-자식 간선으로 실현하되 모든 내부 노드에서 부모 간선의 가중치가 자식 간선보다 작고 각 노드의 자식 수가 M 이하가 되도록 숲을 만든다. 이때 트리 수의 최솟값을 출력한다.
문제
1736년, Leonhard Euler는 쾨니히스베르크의 다리 문제에 대한 논문을 썼으며, 이 논문은 그래프 이론 역사상 최초의 논문으로 여겨진다. 오늘날 그래프 이론은 매우 중요하게 다루어지며, 대부분의 이산수학 교재에는 그래프 이론에 대한 장이 포함되어 있다.
이 문제는 그래프 이론, 특히 트리와 포리스트에 관한 문제이다. 개의 튜플 가 주어질 때, 다음 일곱 가지 조건을 모두 만족하는 포리스트 중에서 트리의 개수가 가장 적은 포리스트를 구성하라.
- 포리스트의 각 트리는 루트가 있는 트리이다.
- 포리스트의 각 노드 는 값 를 가진다.
- 포리스트의 각 간선 는 값 를 가진다.
- 각 튜플 는 부모 노드 와 자식 노드 사이의 부모 자식 관계로 포리스트에 정확히 한 번씩 등장하며, , , 를 만족한다.
- 루트도 리프도 아닌 모든 노드 에 대해, 는 모든 보다 작다. 여기서 는 의 부모이고 는 의 자식이다.
- 포리스트의 모든 노드는 최대 개의 자식을 가진다.
- 포리스트는 정확히 개의 간선을 포함한다.
문제를 단순화하기 위해, 모든 튜플의 는 서로 다르다고 보장한다. 즉, 같은 를 가진 두 튜플은 존재하지 않는다.
위 조건을 만족하면서 트리의 개수가 최소인 포리스트에 포함된 트리의 개수를 출력하라.
입력
첫째 줄에 튜플의 개수와 각 노드가 가질 수 있는 최대 자식 수를 나타내는 두 정수 ()이 주어진다. 다음 개의 줄에는 각 튜플 를 나타내는 세 정수 (, )가 한 줄에 하나씩 주어진다. 같은 를 가진 두 튜플은 존재하지 않음이 보장된다.
출력
주어진 조건을 만족하면서 트리의 개수가 최소인 포리스트에 포함된 트리의 개수를 나타내는 정수를 한 줄에 출력한다.
힌트
첫 번째 샘플에 대한 설명은 다음과 같다.

첫 번째 샘플에서, 이 포리스트는 모든 조건을 만족하는 유일한 포리스트이다. 이 포리스트에는 2개의 트리가 있다.

반면에, 다음 포리스트는 조건을 만족하지 않는다.
- 노드 는 이 과 보다 크므로 조건 5를 위반한다.
- 노드 는 3개의 자식을 가지므로 조건 6을 위반한다 (은 2이다).
- 인데 포리스트에 6개의 간선이 있으므로 조건 7을 위반한다.
하나의 조건이라도 위반하면 해당 포리스트는 올바르지 않다.