次いで、通信ブロックに対して、無向エッジとしてのアーム(B)を考える
一本の木、根のように必要に応じてポイントを意味し、1ない環が存在しない、各エッジノードのみを選択息子ができ、最大数を選択することは明らかルート
リングがあり、環は、必要に応じてルートとして、除去木、木エッジ選択息子となるようにリング上に静止するリングの側面は、特定の順序を選択することができるリム場合2.
その後、被験者は、維持するために、互いに素なセットと通信する各ブロックのツリーの最大数を維持するのに必要な最小値に等価です
1の#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 INT nは、X、Y、ANS、F [ 1000005 ]、VIS [ 1000005 ]。 4 INT検索(int型K){ 5 もし(K == F [K])戻りK。 6 戻り F [K] = (F [K])を見つけます。 7 } 8 INT メイン(){ 9 のscanf(" %d個"、&N) 10 のために(INT iは= 1 ; iが<= N + 1 ; I ++)F [I] =私; 11 のために(INT iは= 1 ; iが<= N; I ++ ){ 12 のscanf(" %D%D "、およびX&Y)。 13 であれば(見つける(X)==(y)を見つける。)VIS [(X)を検索] = 1 。 14 他{ 15 であれば(見つける(X)> (y)を見つける。)スワップ(x、y)は 16 VIS [検索(Y)] | = VIS [検索(X)]。 17 VIS [(X)を検索] = 1 。 18 F = [(X)を検索] (y)を見つけます。 19 } 20 } 21 ANS =1 ; 22 一方(ねじ[年])年++ 。 23 のprintf(" %dの"、ans- 1 )。 24 }