알고리즘||코딩테스트/백준

14244번 트리 만들기 (Silver4)

째로스 2023. 6. 23. 14:52

https://www.acmicpc.net/problem/14244

 

14244번: 트리 만들기

n과 m이 주어졌을 때, n개의 노드로 이루어져 있고, m개의 리프로 이루어져 있는 트리를 만드는 프로그램을 작성하시오. 항상 정답이 존재하는 경우만 입력으로 주어진다. 트리는 사이클이 없는

www.acmicpc.net

import sys
n,m=map(int,sys.stdin.readline().split())

print(0,1)
for i in range(1,n-m+1):
    print(i,i+1)
if m!=2:
    for i in range(n-m+2,n):
        print(n-m,i)

m>2인 경우 0번 노드와 마지막 m-1개의 노드를 리프 노드로 만들면 된다.

예로 n=6, m=4일 때, 0번 노드가 하나의 리프노드이므로 2개의 중간 노드를 두고

나머지 3,4,5 번 노드를 리프노드로 만들면 된다. (0번 노드도 리프 노드 임에 유의한다.)

 

m==2인 경우는 양 끝 노드가 리프 노드가 되는 경우이므로 한줄로 이어붙이면 된다.