팀 그룹
설명
중앙 남부 대학 ACM 여름 훈련 캠프는 교육의 모든 선수 'N 이름을 것입니다 시작됩니다 두 그룹으로 나누어 순위 훈련에 의해 시험 (각각 1, 2, ..., N으로 번호), 전 선수가 K로 나누어 그룹 A는 나머지 그룹 멤버들로 분할 B.
하지만 지금은 코치가 실수로 순위 훈련 시험을 잃었 CSGrandeur하지만 그룹 A와 B 그룹 직원을 결정하기 전에되지 않은 후 CSGrandeur 교육 직원을 요청하려는 어떤 순서로 각 순위에 플레이어의 그룹이 무엇인지를 결정합니다.
선수가 먼지로 순위 훈련을하고 있습니다 그러나, 단지 막연하게 어떤 사람들은 여기에 M 메시지 CSGrandeur의 최종 총에 다시 자신의 뒤쪽에 온 기억 튜플을 사용하여 각 메시지 (X, Y) (X! = y)는 X 플레이어 기억보다 더 후 자신의 의지의 y 위 선수를 의미했다.
이제 CSGrandeur 알고 싶은 정보의 M 조각에 따라, 당신은 선수 그것의 그룹 여부를 확인할 수 있습니까? (기본적으로 모든 정보가 사실과 선수 훈련에 반영됩니다.)
입력
테스트 데이터의 복수의 세트를 포함하는 입력.
각 시험의 첫 번째 행은 세 개의 양의 정수 N 포함 (2 <= N <= 1000), K (1 <= K <= N), M (1 <= M <= 10000), 상기 문헌을 의미한다. 다음 M 라인은 각각 두 개의 양의 정수의 X, Y가 (1 <=의 X, Y <= N이고, X가! = Y)은, X, Y의 각각의 쌍에 대해, 정보의 M 개를 설명 x는 각각의 이름을 나타낸다 나는에 의존 자신의 소유가 아닌 Y 후 순위의 첫 번째 팀 선수를 기억한다.
출력
A 군의 구성원, 출력 "YES"(따옴표 제외)를, 그렇지 않으면 (따옴표없이)를 "NO"로 출력하는 경우 각 시험은 결정될 수있다.
샘플 입력
3 1 2 1 2 1 3 3 2 2 1 2 1 3
샘플 출력
YES
NO
힌트
아이디어 : 그는 전달할 수 있습니다 얼마나 많은 사람들이 판단 할 수있는 모든 인접리스트에 대한 검색을 수행하는 경우보다 크거나 같은 나노 미터의 지점, 그 이름의 m.
#INCLUDE <비트 / STDC ++ H.> 은 USING 공간 STD; CONST의 INT MAXN = 1E5 + 5. ] int로 먼저 [MAXN을, 다음 [MAXN, 에지 [MAXN] [ 2 ] int로 VIS [MAXN] int로 추가를 ( INT의 , INT의 B, INT의 c) { 다음 [C] = 제 [A]; //으로 다음의 최초 발생에 가리키는 정보] 제 [A] =의 C를 // 태그 C 현재 메시지에 나타나는 에지 [C] [ 0 ] = a 및 에지 [C] [ 1. =] B] } 큐 < INT > Q 단계; INT BFS ( INT I) { memset 함수 (힘, 0 , 는 sizeof (힘)); 동안 (! q.empty ()) q.pop (); q.push (I); INT CNT = 0 ; 힘 [I] = 1 ; 반면 (! q.empty ()) { INT t = q.front (); q.pop (); 대 ( INT의 J = 제 [t] J =! - 1 ; J = 다음 [J]) { 경우 (힘 [에지 [J] [ 1 ]] == 0 ) { 힘 [에지 [j를] [ 1 ] = 1 ; q.push (에지 [J] [ 1 ]); CNT ++ ; } } } 반환 탄소 나노 튜브를; } INT 의 main () { INT의 N, M, K; INT의 XX, YY; 반면 (는 scanf ( " % D % D % D " !, N, M, K) = EOF) { memset 함수 (제 1, - 1 , 를 sizeof 제 ()); memset 함수 (다음, 0 , sizeof 연산자(다음 것)); INT CNT1 = 0 ; 위한 ( int로 I = 0 ; I <K가 나는 ++ ) { 는 scanf ( " %의 D % d에 " , XX, YY)을; (YY, XX, ⅰ) 추가; } 에 대해 ( int로 I = 1 <; ++ i가 N = 난 ) { 경우 (BFS (I) = (N-> m)) { CNT1 ++ ; } } 경우 (CNT1> = m) 의 printf ( " YES \ n을" ), 다른 원인 의 printf ( " NO \ n을 ' ); } }