Baba is Rabbit

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

요약
p is q 형태의 명령들이 주어질 때, Baba에게 명령을 한 번 이상 적용해 도달할 수 있는 모든 객체를 사전순으로 출력한다.
난이도

보통10점 중 4점

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

문제

원이는 요즘 유행하는 게임을 하고 있다. 이 게임은 is 라는 단어를 이용해 어떤 사물을 다른 사물로 바꿀 수 있다. 규칙은 다음과 같다.

  • 게임 시작 시 몇 개의 명령을 설정해놓는다.
    • 이 때, 모든 명령의 형태는 p is q 의 형태이며, p, q는 사물이다.
  • 두 사물 p, q에 대해 p is q 라는 명령은 사물 p를 사물 q로 바꾼다.
    • 이러한 행위를 명령을 적용한다고 부른다.

어떤 사물 p에 대해 적용할 수 있는 명령이 두 가지 이상이면, 그 중 아무거나 하나 골라서 적용할 수 있다. (아무 명령도 적용하지 않을 수도 있다.) 그리고 어떤 사물 p에 명령을 한 번 이상 적용한 결과로 다시 p가 나오는 경우는 없다.

게임 초기에 설정된 명령들이 주어졌을 때, Baba에 명령을 적용하여 어떤 사물로 만들 수 있는지 구해보자.

입력

첫 줄에 전체 명령의 수 N(1 ≤ N ≤ 100,000)이 주어진다.

이후 N개의 줄에 걸쳐 명령이 주어진다. 각 명령은 p is q의 형태로 주어지며, p와 q는 첫 글자가 영문 대문자이고, 나머지 글자는 영문 소문자인 길이 10 이내의 문자열이다.

출력

Baba에 명령을 한 번 이상 적용한 결과로 나올 수 있는 사물을 사전순으로 출력한다. 단, 적용할 수 있는 명령이 없다면, 아무것도 출력하지 않는다.

예제4

  1. 예제 1

    입력
    1
    Rabbit is Carrot
    
    예상 출력
  2. 예제 2

    입력
    3
    Rabbit is Carrot
    Baba is Cat
    Cat is Rabbit
    
    예상 출력
    Carrot
    Cat
    Rabbit
    
  3. 예제 3

    입력
    1
    Baba is Rabbit
    
    예상 출력
    Rabbit
    
  4. 예제 4

    입력
    4
    Baba is Rabbit
    Rabbit is Cat
    Cat is Wall
    Wall is Unist
    
    예상 출력
    Cat
    Rabbit
    Unist
    Wall