주제 링크 : http://codeforces.com/problemset/problem/939/A
당신이 알 수있는 것처럼 어떤 남성 비행기 나 여자 비행기 없습니다. 그러나, 지구에서 각 비행기는 다른 비행기를 좋아한다. 거기 N 까지 번호 지구 평면 에 1 N은 한 번호 비행기 나 번호로 평면을 추천 f를 I 여기서, 1 ≤ f를 I ≤ N 및 f를 I ≠ I .
우리는 비행기있는 상황 삼각 전화 A는 평면 좋아하는 B는 , 평면 B는 평면을 좋아하는 C를 하고 평면 C가 평면 좋아 을 . 지구에 어떤 삼각 관계가 있는지 알아보십시오.
첫 번째 라인은 하나의 정수를 포함 N ( 2 ≤ N 면의 수 - ≤ 5000).
두 번째 행은 포함 N 정수 F (1), F (2), ..., F , N ( 1 ≤ F I ≤ N , f를 I ≠ I 의미) I 번째 평면 추천은 f를 난 번째.
출력« 예»지구에서 비행기로 구성된 사랑의 삼각이있는 경우. 그렇지 않으면, 출력« NO».
당신은 출력 소문자 나 대문자로 모든 문자를 할 수 있습니다.
5
2 3 4 5 1
예
5
5 5 5 5 1
아니
첫번째 예 평면에서 2 평면 추천 평면 4, 4면 추천 평면 1 1 평면 추천 2 및 그 삼각이다.
두 번째 예에서는 어떤 삼각 관계가 없습니다.
아이디어 : 주제 제 1의 효과가 2 제 3 호 제 1 호 제 3 호처럼, 어떻게 그것을 표현하는, 같은 호, 제 2 호와 같다? 첨자 배열을 표현하는, 예를 들어, [1] 제 2 마찬가지로 A [2] = 3을 나타내는 제 같이 = 2, 2 호 나타내는 제 3 같이 [3] = 1, 번호 3과 같은 대표 1. 이제 문제는 세 사이의 관계를 표현하는 방법이다. AC 코드를 참조하십시오 :
#INCLUDE <iostream> 은 USING 스페이스 STD; INT N-, A [ 5001 ]; INT 의 main () { while 회 (CIN >> N-) { INT 플래그 =에서는 0 ] // 설정된 플래그 대 ( INT I = 1. ; I <= N-; I ++ ) CIN >> A [I] 대 ( INT I = 1. ; I <= N-; I ++ ) IF (a [A [A [I]] == I) // 긴 조건으로 즉시 루프에서 즉시 종료 깃발 = 1; 경우 (플래그 == 1 ) COUT << " YES " << ENDL; 다른 COUT << " NO " << ENDL; } 반환 0 ; }
A [1] = 2, A [2] = 3, 조건, 우리는 분석이 예를 들자면 삼각 대회의 그룹 인 [3] = 1. A [1] = 2 설명 2 번 같은 1 번, 우리는 바로 그렇게, 우리는 2 번처럼의 [1] = 2 (1 번 좋아 2 번) 2 위를 넣어 누구인지 알고 싶어 제 2 누가 결정 어레이 (A) 내로, 즉, [A [. 1], A [1] = 2와 같은 [A [1]은 동등한 동일한 같은 번호 2로 표시되는 [2] 리튬, A [2] 같은? 다음은 [A가 [1] 어레이 (A) 내로 인 3을 나타내는 방법 = 3에있어서, [A [A [1] (3 번처럼이라고 누가는), 그들은 3 1 위를할지 여부를 결정하고, 만약 그렇다면, 사랑 삼각형의 세 가지 조건, 그렇지 않으면 만족하지를 충족하기 위해 판사를 계속합니다. 잘 이해에서 어렵지 않다 후 이해합니다.