QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 128 MB

#23530. 계통 트리

Statistics

문제

생물 개체들 사이에 대한 계통 관계를 구성하는 것은 생물정보학에서 매우 중요한 작업이다.

계통 관계는 보통 트리로 표현되는데, 이를 계통 트리라고 부른다. 각 개체는 계통 트리에서 잎 노드(leaf node)에 대응된다.

계통 트리에서 두 잎 노드 사이의 경로 길이는 해당 노드에 대응되는 두 개체가 진화생물학적으로 가까운 정도를 나타낸다.

계통 트리를 참고하여 개체들 사이에서 진화생물학적으로 가까운 정도를 나타내는 그래프를 정의할 수 있다.

이 그래프를 계통 그래프라고 부른다.

유사도 $K$인 계통 그래프는 다음과 같이 정의된다.

그래프의 정점은 각 개체를 나타내고, 두 정점 사이에 에지가 존재할 필요충분조건은 계통 트리에서 이 두 정점에 대응되는 노드들 사이의 거리(경로의 길이)가 $K$ 이하인 경우이다.

실험실에서 유사도 3인 계통 그래프를 구축한 후에 계통 트리에 대한 자료를 분실하였다. 따라서 계통 트리를 복원하기 위한 작업을 수행하려고 한다.

유사도 3인 계통 그래프가 주어질 때, 이 그래프를 정의해 주는 계통 트리를 구하는 프로그램을 작성하시오.

입력으로 주어지는 계통 그래프는 항상 연결 그래프이며 이 그래프에 대한 계통 트리가 반드시 존재한다는 것에 유의하시오.

입력

첫째 줄에는 계통 그래프의 정점의 개수를 나타내는 정수 $N$ ($2 \le N \le 5000$)이 주어진다.

정점들은 1부터 $N$까지의 번호로 구분된다.

둘째 줄에는 계통 그래프 에지의 개수를 나타내는 정수 $M$ ($1 \le M \le 1000000$)이 주어진다.

그 다음 $M$개의 줄에는 각 줄마다 계통 그래프의 한 에지의 양끝 정점 번호를 나타내는 두 개의 정수 $v,w$ ($1 \le v,w \le N$)가 주어진다.

출력

첫째 줄에 계통 트리의 에지의 개수 $S$를 출력한다.

그 다음 $S$개의 줄에는 각 줄마다 각 에지의 양끝 정점 번호인 $v$, $w$를 빈칸 한 개를 사이에 두고 출력한다.

트리 에지들은 임의의 순서로 출력하면 된다.

단, 트리 노드의 번호를 1부터 $N$까지는 잎 노드들을 위해서 배정해야 한다.

또한, 입력으로 주어진 계통 그래프의 정점과 이에 대응되는 계통 트리의 잎 노드는 서로 같은 번호를 사용해야 한다.

나머지 내부 노드의 번호는 $N+1$부터 $S+1$까지 임의로 정할 수 있다. 계통 트리가 하나 이상 존재하는 경우, 그 중에 하나만 구해 출력한다.

입력 예시

6
7
1 2
2 3
3 1
3 4
3 5
5 6
6 3

출력 예시

9
1 7
2 7
3 9
4 8
5 10
6 10
7 9
8 9
9 10

Scoring: 100 points if all tests pass, otherwise 0.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.