トピックリンク:http://codeforces.com/problemset/problem/939/A
あなたが知っている可能性としては何の男性面でも女性のプレーンはありません。しかし、地球上の各プレーンは、他のいくつかの飛行機が好き。ある N から番号地球上の平面、 1 Nは、その数を有する平面は iが 数と平面を好き 、F 、I、ここで 1≤ F I ≤ N と F I ≠ I。
私たちは愛の三角形平面いる状況呼び出す Aは 平面好き Bを平面、 Bは 平面好き C と平面 Cは 平面好き Aを。地球上のすべての愛の三角形があるかどうかを確認します。
最初の行は、単一の整数含ま N (2≤ N プレーンの数- ≤5000)。
2行目は含ま nは 整数 F 1、 F 2、···、 F N (1≤ F I ≤ N、 fはI ≠ Iつまり、) I番目の面が好きは、 fはiは番目。
出力« YES»地球上の平面からなる三角がある場合。それ以外の場合は、出力« NO»。
あなたは、出力小文字または大文字で任意の文字をすることができます。
5
2 4 1 3
はい
5
5 5 5 5 1
番号
最初の例では平面 2は、平面好き 4を、面 4が平面好き 1、プレーン 1は、平面好き 2、それは愛の三角形です。
2番目の例では何の三角関係はありません。
アイデア:トピック番号1の効果は、それを表現する方法、1番3号等のように2番、2番3号のようなものですか?添字アレイを表現すると、例えば、1番2番のような[1] = 2、2 3号、同様に表し号、[2] = 3と同じトークンAを表す[3] = 1、のような数を表し、3 1。今、困難が3との間の関係を表現する方法です。ACコードを参照してください。
#include <iostreamの> 使用して 名前空間STD; INT N-、A [ 5001 ]; int型のmain() { 一方(CIN >> N-) { int型フラグ=で0 ; // 設定されたフラグ のための(INT I = 1 ; I <= N-; I ++ ) CIN >> [I]、 のために(INT I = 1 ; I <= N; I ++ ) IF([[[I]]] == I)// 直ちに長い条件としてループの外に、すぐに終了 フラグ= 1; もし(フラグ== 1 ) COUT << " YES " << ENDL。 他の 裁判所未満 << " NO " << てendl; } 戻り 0 。 }
三角満たす条件の基である[1] = 2、[2] = 3、[3] = 1、、我々が分析するこの例を取ります。[1]第2のような= 2説明第1、我々はすぐにそのような第2が誰であるかを判断する、我々は、第2のような人を知りたい[1] = 2(第1お気に入りの第2)を入れた第2の配列aへ、すなわち、[1]、[1] = 2、[1]と同じような番号2で表される、[2]と等価です[[[1]]](番号のような、である3である配列aへ気に入りましたか?次に[[1]] 3を表す方法のLi、[2] = 3、誰が、彼らは3番1をしたいと思い、そうであれば、愛の三角形の三つの条件を満たすように、それ以外の場合は満足していない、裁判官に続けるかどうかを判断するために、)です。十分な理解の下で理解することは、難しいことではないの後。