リング互いに素セットの最小要件

例:羅Guxin情報転送

私はそれをメモしておき説明を読んだ後、ないTaccaこの質問を行うように必要な最小値は、問題の2015 NOIPリングです!

 

後、我々はリングのすべてを見つけなければならない最低限のループを必要とし、リングの方法でも、すでに上の場合は、いないこの時点では、環を形成して、彼らは今接続しているかどうか、私は読んで父親を見つけることです彼らはその後、何人かの人々が存在する場合ので、この辺が含まれているリングは、あなたが今、あなたはそれが間違って鳴りませんよりも小さい場合、それらを接続しないでください、お願いしますと推定され、それ以外の場合は、サイクルを死んでしまう、2を接続する必要があります?我々は、ビューのポイントを通過すると父は、唯一のすべてのポイントのためにそこにあるので(これは、この質問はので、この場合には、特別な数字ではありません、私私の父それはもはやすることができ、父s」はすでに知っていましたこの後、リングの他の側面があります)、当然のことながら、この時点では、父親が異なるIncorporatedの私を取った場合

 

 

1の#include <iostreamの>
 2の#include <ベクトル>
 3の#include <アルゴリズム>
 4の#include <CStringの>
 5の#include <climits>
 6  使用して 名前空間をSTD。
7  INT FA [ 200010 ]。
8  INT RES = INT_MAX。
9  INT CNT = 0 10  int型の検索(int型X)
 11  {
 12      CNT ++ 13      であれば(FA [X] == X)
 14          リターンFA [X]。
15     他の
16          のリターンのfind(FA [X]);
17  }
 18  のint main()の
 19  {
 20      INT N。
21      CIN >> N。
22      のためにINT iは= 1 ; iが<= N; I ++ 23          のFA [I] = I。
24      のためにINT iは= 1 ; iが<= N; I ++ 25      {
 26          、CNT = 0 27          INT トン。
28          cinを>> トン。
29          もし(==)(Tを見つけるI)
 30          {
 31の              RES = 分(RES、CNT)。
32          }
 33          他の
34          {
 35              [I] = FA T。
36          }
 37      }
 38      COUT << RES。
39      リターン 0 ;
40 }

 

 

 

おすすめ

転載: www.cnblogs.com/greenofyu/p/12002362.html