만드는 중입니다

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

부르들로의 세 왕국

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

요약
각 문서를 긍정 또는 부정으로 읽는 방식을 적절히 정했을 때 p가 q의 조상이라는 가설과 모순되지 않는지 판정한다.
난이도

어려움10점 중 9점

유형
그래프, 유니온 파인드, 구현, 수학
정답자
아직 제출이 없습니다

문제

당신은 고대 부르들로 세 왕국의 왕조를 연구하는 계보 연구소의 고고학자다. 유적을 발굴하다가 이 왕조들을 기록한 문서를 여러 장 찾아냈다. 세 왕국의 초기 역사는 알려진 것이 없고 많은 왕과 왕비의 이름도 남아 있지 않아, 이 문서가 왕가의 혈연 관계를 알려 주는 유일한 기록이다.

문서는 여러 줄로 이루어지고, 각 줄에는 왕족 두 사람의 이름이 적혀 있다. 두 줄짜리 문서의 예는 다음과 같다.

Alice Bob
Bob Clare

각 줄은 원래 완전한 문장이었지만 문서가 심하게 훼손되어 한 줄에서 이름 두 개만 읽어 낼 수 있다. 모든 줄을 참인 조상 관계로 읽으면 모순이 생긴다. 어떤 문서는 부정문으로 읽어야 조상 관계를 모순 없이 이해할 수 있다. 각 문서는 긍정 문서이거나 부정 문서다.

  • 긍정 문서에서는 각 줄의 왼쪽 사람이 오른쪽 사람의 조상이다. 위 문서를 긍정 문서로 읽으면 "Alice는 Bob의 조상이고, Bob은 Clare의 조상이다"가 된다.
  • 부정 문서에서는 각 줄의 왼쪽 사람이 오른쪽 사람의 조상이 아니다. 위 문서를 부정 문서로 읽으면 "Alice는 Bob의 조상이 아니고, Bob은 Clare의 조상이 아니다"가 된다.

한 문서 안에서 긍정과 부정이 섞이는 일은 없다. 위 문서를 "Alice는 Bob의 조상이고, Bob은 Clare의 조상이 아니다"로 읽을 수는 없다.

어느 줄에도 직접 적히지 않은 조상 관계를 다음 규칙으로 알아낼 수 있다. 임의의 사람 xx, yy, zz에 대해 xx가 yy의 조상이고 yy가 zz의 조상이면 xx는 zz의 조상이다. 그래서 위 문서를 긍정 문서로 읽으면 "Alice Clare"라는 조상 관계도 얻는다.

당신은 "pp가 qq의 조상이다"라는 가설 하나를 확인하려 한다. 어느 문서가 긍정이고 어느 문서가 부정인지는 알 수 없다. 문서들과 서로 다른 두 이름 pp, qq가 주어질 때, 이 가설과 모순되지 않는 해석이 있는지 판정하라. 어떤 해석이 가설과 모순된다는 말은, 그 해석과 가설에서 어떤 두 사람 xx, yy에 대해 다음 중 하나를 알아낼 수 있다는 뜻이다.

  • xx가 yy의 조상이면서 yy가 xx의 조상이다.
  • xx가 yy의 조상이면서 xx가 yy의 조상이 아니다.

문서에 나오는 사람은 저마다 이름이 하나뿐이다. 두 사람이 같은 이름을 쓰지 않고, 한 사람이 여러 이름으로 나오지도 않는다.

AA가 BB의 조상이라는 말은 AA가 BB의 부모, 조부모, 증조부모 등이라는 뜻이다. 어느 문서에도 나오지 않는 사람이나 조상 관계가 있어도 된다. 그림 1의 가계도라면 다음 긍정 문서가 가능하다.

A H
B H
D H
F H
E I

여기서 C와 G는 나오지 않고, "A E", "D F", "C I" 같은 조상 관계도 나오지 않는다.

가계도

그림 1. 가계도

입력

입력은 다음 형식의 테스트 케이스 하나로 이루어진다.

p q
n
c_1
...
c_n

첫 줄에는 서로 다른 두 이름 pp와 qq가 공백으로 구분되어 주어진다. 둘째 줄에는 문서의 개수 nn이 주어진다. 이어서 문서 nn개의 설명이 주어진다.

ii번째 문서 cic_i의 형식은 다음과 같다.

m_i
x_{i,1} y_{i,1}
...
x_{i,m_i} y_{i,m_i}

첫 줄에는 그 문서에 적힌 이름 쌍의 개수 mim_i가 주어진다. 이어지는 mim_i개의 줄에는 서로 다른 두 이름 xi,jx_{i,j}와 yi,jy_{i,j} (1≤j≤mi1 \le j \le m_i)가 공백으로 구분되어 주어진다.

이름은 영어 소문자와 대문자로만 이루어지고 길이는 1 이상 5 이하다. 두 이름은 완전히 같을 때만 같은 이름이므로 a와 A는 서로 다른 사람의 이름이다.

테스트 케이스는 다음 조건을 만족한다.

  • 1≤n≤10001 \le n \le 1000
  • 1≤mi1 \le m_i
  • ∑i=1nmi≤100000\sum_{i=1}^{n} m_i \le 100000, 즉 문서에 적힌 이름 쌍의 총 개수는 100000100000개 이하다.
  • 테스트 케이스에 나오는 서로 다른 이름은 300300개 이하다.

출력

pp가 qq의 조상이라는 가설과 모순되지 않는 해석이 존재하면 Yes를, 존재하지 않으면 No를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    Alice Bob
    3
    2
    Alice Bob
    Bob Clare
    2
    Bob Clare
    Clare David
    2
    Clare David
    David Alice
    
    예상 출력
    No
    
  2. 예제 2

    입력
    Alice David
    3
    2
    Alice Bob
    Bob Clare
    2
    Bob Clare
    Clare David
    2
    Clare David
    David Alice
    
    예상 출력
    Yes
    
  3. 예제 3

    입력
    Alice Bob
    1
    2
    Clare David
    David Clare
    
    예상 출력
    Yes