가장 긴 사슬

면접 대비

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

요약
양 끝 링에 서로 다른 번호 a, b가 붙은 끈 n개가 주어질 때, 만들 수 있는 가장 긴 체인(트레일)의 링 개수를 구한다.
난이도

보통10점 중 7점

유형
그래프, DFS, 백트래킹, 구현
정답자
아직 제출이 없습니다

문제

양 끝에 고리가 달린 끈을 생각한다. 각 고리에는 양의 정수가 적혀 있어 끈을 서로 구별할 수 있으며, 한 끈의 양 끝 두 고리에는 서로 다른 두 수 aa, bb가 적혀 있다. 이러한 끈을 [a, b]로 나타낸다.

여러 개의 끈이 있을 때, 한 끈의 고리와 다른 끈의 고리에 적힌 수가 같으면 그 고리에서 두 끈을 이을 수 있고, 이렇게 이어 만든 것을 사슬이라고 부른다. 예를 들어 끈 [1, 3]과 [3, 4]로부터 사슬 [1, 3, 4]를 만들 수 있다. 끈과 사슬, 또는 사슬과 사슬도 같은 수가 적힌 고리에서 이을 수 있다.

예를 들어 사슬 [1, 3, 4]와 끈 [5, 1]로부터 [5, 1, 3, 4]가 만들어지고, 사슬 [1, 3, 4]와 사슬 [2, 3, 5]로부터는 가운데에서 교차하는 모양이 만들어진다. 사슬 [1, 3, 4]와 사슬 [4, 6, 1]로부터는 닫힌 고리 모양이 만들어진다.

이렇게 다양한 모양이 만들어지는데, 그중에서 같은 수가 적힌 고리를 한 번씩만 지나며 이어진 끈들을 특별히 사슬로 정의한다. 예를 들어 사슬 [1, 3, 4]와 [2, 3, 5]로 만들어진 교차 모양에는 [1, 3, 5], [2, 3, 4] 같은 사슬도 포함되고, 사슬 [1, 3, 4]와 [4, 6, 1]로 만들어진 고리 모양에는 [1, 3, 4, 6], [3, 4, 6, 1], [4, 6, 1, 3] 같은 사슬이 포함된다.

각 사슬의 길이는 그 사슬에 포함된 고리(수)의 개수로 정의한다.

주어진 여러 끈에 대해 이을 수 있는 것을 모두 이으면 하나 이상의 사슬을 포함하는 모양이 만들어진다. 그중에서 가장 긴 사슬의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 끈의 개수를 나타내는 양의 정수 nn (1≤n≤1001 \le n \le 100)이 주어진다. 이어지는 nn개의 줄에는 각각 공백으로 구분된 두 정수 aa, bb (1≤a<b≤1001 \le a < b \le 100)가 주어지며, 이는 한 끈의 양 끝 고리에 적힌 두 수를 나타낸다.

출력

가장 긴 사슬의 길이를 출력하고, 끝에 줄바꿈을 넣는다.

예제3

  1. 예제 1

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

    입력
    6
    1 2
    2 3
    3 4
    4 5
    1 5
    2 6
    
    예상 출력
    6
    
  3. 예제 3

    입력
    7
    1 3
    2 4
    3 5
    4 6
    6 7
    2 6
    4 7
    
    예상 출력
    4