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

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

마니또

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

요약
N명의 사람에 대한 순열이 주어질 때, 함수 그래프의 사이클 개수를 센다. N이 0이면 입력이 끝난다.
난이도

보통10점 중 5점

유형
그래프, DFS, 구현, 해시맵
정답자
아직 제출이 없습니다

문제

N명의 사람이 마니또 놀이를 한다. 각 사람은 자신을 제외한 다른 한 사람의 이름이 적힌 쪽지를 받아, 그 사람에게 몰래 선행을 베푼다. 자기 자신의 이름을 받는 경우는 없다.

이 놀이를 지켜보던 세종이는 '마니또 체인'이라는 개념을 발견했다. 세종이가 동우에게 선행을 베풀고, 동우가 재혁이에게, 재혁이가 호용이에게 선행을 베푸는 식으로 계속 따라가다 보면, 언젠가는 처음 시작한 세종이에게 다시 선행을 베푸는 사람이 나타난다. 즉, 선행이 한 바퀴 돌아 제자리로 돌아오는 연결 고리(체인)가 반드시 생긴다. 이 고리는 2명으로만 이루어질 수도 있고, N명 전체가 하나의 고리에 포함될 수도 있다.

N명의 사람들 사이에서 이러한 연결 고리가 몇 개나 생기는지 세어 출력하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 번째 줄에는 사람의 수 NN이 주어진다 (3≤N≤203 \le N \le 20). NN이 00이면 입력의 끝을 의미하며, 그 이후로는 더 이상의 입력이 없다.

이어지는 NN개의 줄에는 각각 두 사람의 이름이 공백으로 구분되어 주어진다. 각 줄은 '첫 번째 사람이 두 번째 사람에게 선행을 베푼다'는 뜻이다. 한 테스트 케이스 안에서 첫 번째 위치에 오는 이름들은 서로 겹치지 않고, 두 번째 위치에 오는 이름들도 서로 겹치지 않으며, 한 줄에 같은 이름이 두 번 나오지 않는다. 각 이름의 길이는 10자를 넘지 않는다.

출력

각 테스트 케이스마다 한 줄에 테스트 케이스의 번호(1부터 시작)와 연결 고리의 개수를 공백으로 구분하여 출력한다.

예제5

  1. 예제 1

    입력
    5
    Andrew Sally
    Chen Andrew
    Ahmed Tess
    Sally Chen
    Tess Ahmed
    0
    
    예상 출력
    1 2
    
  2. 예제 2

    입력
    3
    Amy Ben
    Ben Cara
    Cara Amy
    0
    
    예상 출력
    1 1
    
  3. 예제 3

    입력
    4
    A B
    B A
    C D
    D C
    3
    X Y
    Y Z
    Z X
    0
    
    예상 출력
    1 2
    2 1
    
  4. 예제 4

    입력
    6
    a b
    b c
    c d
    d a
    e f
    f e
    0
    
    예상 출력
    1 2
    
  5. 예제 5

    입력
    4
    w x
    x y
    y z
    z w
    0
    
    예상 출력
    1 1