만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

자바의 형변환

면접 대비

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

요약
상속 관계를 나타내는 트리에서 주어진 두 클래스 중 한쪽이 다른 쪽의 조상인지 확인합니다.
난이도

쉬움10점 중 3점

유형
트리, 해시맵, DFS
정답자
아직 제출이 없습니다

문제

자바의 클래스끼리는 상속을 통해 자신의 기능 일부를 다른 클래스에 넘겨줄 수 있다. 이때 상속을 받은 클래스는 자식 클래스, 상속을 해 준 클래스는 부모 클래스가 된다. 클래스로 만든 객체는 다른 클래스의 형태로 변환할 수 있으며, 이를 형변환(Casting)이라고 한다. 자식 클래스에서 부모 클래스로 변환하면 업캐스팅(Upcasting), 부모 클래스에서 자식 클래스로 변환하면 다운캐스팅(Downcasting)이라고 부른다. 즉, 자식 클래스와 부모 클래스의 관계에 있으면 형변환이 가능하다. 다운캐스팅은 런타임에 문제를 일으킬 수 있지만 이 문제에서는 고려하지 않는다. 또한 자바는 클래스의 다중 상속을 지원하지 않는다.

예를 들어 number 클래스는 object 클래스를 상속받는다. 따라서 number 클래스는 object 클래스의 자식 클래스이고, object 클래스는 number 클래스의 부모 클래스이다.

자식 클래스가 여러 단계를 거쳐 상속을 받은 경우, 그 자식 클래스에 상속을 해 준 클래스들이 모두 부모 클래스가 된다. 예를 들어 integer 클래스는 number 클래스를 상속받고, number 클래스는 object 클래스를 상속받았으므로, integer 클래스는 number 클래스와 object 클래스를 모두 상속받은 것과 같다. 따라서 integer 클래스와 object 클래스는 부모-자식 관계이며, 두 클래스 사이에 형변환이 가능하다.

입력으로 NN개의 임의의 클래스 사이의 관계가 주어지고, 검사할 두 클래스의 정보가 주어진다. 두 클래스가 서로 형변환이 가능하면 1을, 그렇지 않으면 0을 출력한다.

입력

첫 줄에 클래스의 수 NN이 주어진다. (2≤N≤100 0002 \le N \le 100\ 000)

다음 N−1N - 1개의 줄에 클래스 사이의 관계가 주어진다. AA, BB가 순서대로 주어지며, 이는 AA가 BB의 자식 클래스라는 뜻이다. AA와 BB는 알파벳 소문자로만 이루어진 길이 2 이상 50 이하의 문자열이다.

마지막 줄에는 형변환이 가능한지 확인할 두 클래스가 주어진다. 이 두 클래스는 항상 N−1N - 1개 줄의 입력에 나온 클래스이며, 이름은 서로 다르다.

입력으로 주어지는 트리는 루트가 하나인 트리이다.

출력

두 클래스가 형변환이 가능하면 1을, 그렇지 않으면 0을 출력한다.

힌트

첫 번째와 두 번째 예시의 클래스 구성도는 아래와 같다.

number와 string의 부모 클래스는 object뿐이므로 number와 string은 서로 형변환할 수 없다. 따라서 첫 번째 예시의 답은 0이다.

반면 integer의 부모 클래스는 number이므로 두 클래스는 서로 형변환이 가능하다. 따라서 두 번째 예시의 답은 1이다.

예제2

  1. 예제 1

    입력
    3
    number object
    string object
    number string
    
    예상 출력
    0
    
  2. 예제 2

    입력
    4
    integer number
    number object
    string object
    number integer
    
    예상 출력
    1